L'API Gmail S/MIME fornisce l'accesso programmatico per gestire i certificati email S/MIME per gli utenti di un dominio Google Workspace .
Affinché i certificati funzionino, un amministratore deve attivare S/MIME per il dominio.
Lo standard S/MIME fornisce una specifica per la crittografia e la firma con chiave pubblica dei dati MIME. La configurazione dei certificati S/MIME nell'account di un utente fa sì che Gmail utilizzi il certificato nei seguenti modi:
- Gmail utilizza il certificato e la chiave privata dell'utente per firmare la posta in uscita.
- Gmail utilizza la chiave privata dell'utente per decriptare la posta in arrivo.
- Gmail utilizza il certificato e la chiave pubblica del destinatario per criptare la posta in uscita.
- Gmail utilizza il certificato e la chiave pubblica del mittente per verificare la posta in arrivo.
Generi singoli certificati S/MIME e li carichi utilizzando l'API. Ogni certificato S/MIME è per un alias specifico di un account email utente. Gli alias includono l'indirizzo email principale e gli indirizzi "Invia come" personalizzati. Un singolo certificato S/MIME viene contrassegnato come predefinito per ogni alias.
Autorizzazione dell'accesso all'API
Esistono due modi per autorizzare l'accesso all'API:
- Puoi utilizzare un service account con delega dell'autorità a livello di dominio. Per una spiegazione di questi termini, consulta la pagina Termini della panoramica di autenticazione e autorizzazione. Per informazioni su come attivare questa opzione, consulta Creare un service account con delega dell'autorità a livello di dominio
- Puoi utilizzare un flusso OAuth2 standard che richiede il consenso dell'utente finale per ottenere un token di accesso OAuth2. Per ulteriori informazioni, consulta la Panoramica di autenticazione e autorizzazione. Per utilizzare questa opzione, l'amministratore di dominio deve attivare la casella di controllo "Accesso utente finale API S/MIME attivato" nel pannello di controllo del dominio.
Ambiti ACL
Questa API si basa sugli stessi ambiti ACL dei metodi Gmail sendAs:
- gmail.settings.basic
- Questo ambito è necessario per aggiornare S/MIME Invia come principale.
- gmail.settings.sharing
- Questo ambito è necessario per aggiornare la crittografia S/MIME da quella personalizzata.
Utilizzo dell'API
La risorsa users.settings.sendAs.smimeInfo fornisce i metodi che utilizzi per gestire i certificati S/MIME. Ogni certificato è associato a un alias Invia come per un utente.
Caricare una chiave S/MIME
Utilizza il metodo smimeInfo.insert() per caricare una nuova chiave S/MIME per un alias appartenente a un utente. Identifica l'alias del target utilizzando i seguenti parametri:
- userId
- L'indirizzo email dell'utente. Puoi utilizzare il valore speciale
me
per indicare l'utente attualmente autenticato. - sendAsEmail
- L'alias per cui stai caricando la chiave. Questo è l'indirizzo email visualizzato nell'intestazione "Da:" per la posta inviata utilizzando questo alias.
Il certificato S/MIME e la chiave privata devono
essere presenti nel campo pkcs12
in questo formato; nessun altro campo deve essere impostato
nella richiesta. Il campo PKCS12 deve contenere sia la chiave S/MIME dell'utente
sia la catena di certificati di firma. L'API esegue convalide standard su questo campo prima di accettarlo, verificando quanto segue:
- L'oggetto corrisponde all'indirizzo email specificato.
- Le scadenze sono valide.
- L'autorità di certificazione (CA) che lo ha emesso è presente nel nostro elenco di CA attendibili.
- I certificati corrispondono ai vincoli tecnici di Gmail.
Se la chiave è criptata, la password deve essere nel campo encryptedKeyPassword
. Le chiamate insert() riuscite restituiranno l'ID di smimeInfo che può essere
utilizzato per fare riferimento alla chiave in futuro.
Elenca le chiavi S/MIME di un utente
Utilizza il metodo smimeInfo.list() per restituire l'elenco delle chiavi S/MIME per l'utente specificato per l'alias specificato. Identifica l'alias del target utilizzando i seguenti parametri:
- userId
- L'indirizzo email dell'utente. Puoi utilizzare il valore speciale
me
per indicare l'utente attualmente autenticato. - sendAsEmail
- L'alias per cui elencare le chiavi. Questo è l'indirizzo email visualizzato nell'intestazione "Da:" per la posta inviata utilizzando questo alias.
Recuperare le chiavi S/MIME per un alias
Utilizza il metodo smimeInfo.get() per restituire le chiavi S/MIME specifiche per un alias Invia come specifico per un utente. Identifica l'alias del target utilizzando i seguenti parametri:
- userId
- L'indirizzo email dell'utente. Puoi utilizzare il valore speciale
me
per indicare l'utente attualmente autenticato. - sendAsEmail
- L'alias per cui stai recuperando le chiavi. Questo è l'indirizzo email visualizzato nell'intestazione "Da:" per la posta inviata utilizzando questo alias.
Eliminare una chiave S/MIME
Utilizza il metodo smimeInfo.delete() per eliminare la chiave S/MIME specificata da un alias. Identifica l'alias del target utilizzando i seguenti parametri:
- userId
- L'indirizzo email dell'utente. Puoi utilizzare il valore speciale
me
per indicare l'utente attualmente autenticato. - sendAsEmail
- L'alias per cui stai recuperando le chiavi. Questo è l'indirizzo email visualizzato nell'intestazione "Da:" per la posta inviata utilizzando questo alias.
- id
- L'ID non modificabile per SmimeInfo.
Impostare la chiave S/MIME predefinita per un alias
Utilizza il metodo smimeInfo.setDefault() per contrassegnare la chiave S/MIME specificata come predefinita per l'alias specificato. Identifica l'alias del target utilizzando i seguenti parametri:
- userId
- L'indirizzo email dell'utente. Puoi utilizzare il valore speciale
me
per indicare l'utente attualmente autenticato. - sendAsEmail
- L'alias per cui stai recuperando le chiavi. Questo è l'indirizzo email visualizzato nell'intestazione "Da:" per la posta inviata utilizzando questo alias.
- id
- L'ID non modificabile per SmimeInfo.
Codice di esempio
I seguenti esempi di codice mostrano l'utilizzo dell'API per gestire i certificati S/MIME per un'organizzazione con più utenti.
Creazione di una risorsa SmimeInfo per un certificato S/MIME
Il seguente esempio di codice mostra la lettura di un certificato da un file, la codifica
in una stringa base64url e l'assegnazione al campo pkcs12
della risorsa smimeInfo
:
Java
Python
Caricare un certificato S/MIME
Per caricare un certificato, chiama
smimeInfo.insert
e fornisci la risorsa smimeInfo
nel corpo della richiesta:
Java
Python
Esempi di gestione dei certificati di molti utenti
Potresti voler gestire i certificati per molti utenti dell'organizzazione contemporaneamente. Gli esempi seguenti mostrano come gestire i certificati per più utenti in una singola chiamata batch.
Inserimento di certificati da un file CSV
Supponiamo di avere un file CSV che elenca gli ID utente e il percorso del certificato di ciascun utente:
$ cat certificates.csv
user1@example.com,/path/to/user1_cert.p12,cert_password_1
user2@example.com,/path/to/user2_cert.p12,cert_password_2
user3@example.com,/path/to/user3_cert.p12,cert_password_3
Java
Puoi utilizzare le chiamate createSmimeInfo
e insertSmimeInfo
precedenti per caricare i certificati come specificato nel file CSV:
Python
Puoi utilizzare le chiamate create_smime_info
e insert_smime_info
precedenti per caricare i certificati come specificato nel file CSV:
Gestione dei certificati
Questo esempio combina diverse chiamate dall'API smimeInfo
per mostrare come
potresti gestire i certificati per la tua organizzazione. Elenca i certificati per l'utente e, se il certificato predefinito è scaduto o non è impostato, carica il certificato trovato nel file specificato. Quindi imposta come predefinito il certificato con scadenza più lontana nel futuro.
Viene quindi chiamato da una funzione che elabora un file CSV come nell'esempio precedente.