L'API Gmail S/MIME permet d'accéder par programmation à la gestion des certificats d'e-mails S/MIME pour les utilisateurs d'un domaine Google Workspace.
Un administrateur doit activer S/MIME pour le domaine pour que les certificats fonctionnent.
La norme S/MIME fournit une spécification pour le chiffrement à clé publique et la signature des données MIME. La configuration de certificats S/MIME dans le compte d'un utilisateur permet à Gmail d'utiliser ce certificat de différentes manières :
- Gmail utilise le certificat et la clé privée de l'utilisateur pour signer les e-mails sortants.
- Gmail utilise la clé privée de l'utilisateur pour déchiffrer les e-mails entrants.
- Gmail utilise le certificat et la clé publique du destinataire pour chiffrer les e-mails sortants.
- Gmail utilise le certificat et la clé publique de l'expéditeur pour valider les e-mails entrants.
Vous générez des certificats S/MIME individuels et les importez à l'aide de l'API. Chaque certificat S/MIME est associé à un alias spécifique pour un compte de messagerie utilisateur. Les alias incluent l'adresse e-mail principale ainsi que les adresses "Envoyer en tant que" personnalisées. Un seul certificat S/MIME est marqué comme certificat par défaut pour chaque alias.
Autoriser l'accès aux API
Il existe deux façons d'autoriser l'accès à l'API :
- Vous pouvez utiliser un compte de service avec délégation d'autorité au niveau du domaine. Pour obtenir une explication de ces termes, consultez Termes de présentation de l'authentification et de l'autorisation. Pour savoir comment activer cette option, consultez Créer un compte de service avec délégation d'autorité au niveau du domaine.
- Vous pouvez utiliser un flux OAuth2 standard nécessitant le consentement de l'utilisateur final pour obtenir un jeton d'accès OAuth2. Pour en savoir plus, consultez la présentation de l'authentification et de l'autorisation. Pour utiliser cette option, l'administrateur du domaine doit cocher la case "Accès des utilisateurs finaux à l'API S/MIME activé" dans le panneau de configuration du domaine.
Champs d'application des LCA
Cette API s'appuie sur les mêmes niveaux d'accès ACL que les méthodes Gmail sendAs :
- gmail.settings.basic
- Ce champ d'application est requis pour mettre à jour le S/MIME "Envoyer en tant que" principal.
- gmail.settings.sharing
- Ce champ d'application est requis pour mettre à jour le de personnalisé S/MIME.
Utiliser l'API
La ressource users.settings.sendAs.smimeInfo fournit les méthodes que vous utilisez pour gérer les certificats S/MIME. Chaque certificat est associé à un alias "Envoyer sous" pour un utilisateur.
Importer une clé S/MIME
Utilisez la méthode smimeInfo.insert() pour importer une nouvelle clé S/MIME pour un alias appartenant à un utilisateur. Vous identifiez l'alias cible à l'aide des paramètres suivants :
- userId
- Adresse e-mail de l'utilisateur. Vous pouvez utiliser la valeur spéciale
me
pour indiquer l'utilisateur actuellement authentifié. - sendAsEmail
- Alias pour lequel vous importez la clé. Il s'agit de l'adresse e-mail qui apparaît dans l'en-tête "De" des e-mails envoyés avec cet alias.
Le certificat S/MIME et la clé privée doivent être présents dans le champ pkcs12
au format indiqué. Aucun autre champ ne doit être défini dans la requête. Le champ PKCS12 doit contenir à la fois la clé S/MIME de l'utilisateur et la chaîne de certificats de signature. L'API effectue des validations standards sur ce champ avant de l'accepter, en vérifiant les points suivants :
- L'objet correspond à l'adresse e-mail spécifiée.
- Les expirations sont valides.
- L'autorité de certification (CA) émettrice figure dans notre liste de confiance.
- Les certificats respectent les contraintes techniques de Gmail.
Si la clé est chiffrée, le mot de passe doit figurer dans le champ encryptedKeyPassword
. Les appels insert() réussis renvoient l'ID de smimeInfo qui peut être utilisé pour faire référence à la clé à l'avenir.
Lister les clés S/MIME d'un utilisateur
Utilisez la méthode smimeInfo.list() pour renvoyer la liste des clés S/MIME de l'utilisateur et de l'alias spécifiés. Vous identifiez l'alias cible à l'aide des paramètres suivants :
- userId
- Adresse e-mail de l'utilisateur. Vous pouvez utiliser la valeur spéciale
me
pour indiquer l'utilisateur actuellement authentifié. - sendAsEmail
- Alias pour lequel lister les clés. Il s'agit de l'adresse e-mail qui apparaît dans l'en-tête "De" des e-mails envoyés avec cet alias.
Récupérer les clés S/MIME pour un alias
Utilisez la méthode smimeInfo.get() pour renvoyer les clés S/MIME spécifiques à un alias "Envoyer en tant que" pour un utilisateur. Vous identifiez l'alias cible à l'aide des paramètres suivants :
- userId
- Adresse e-mail de l'utilisateur. Vous pouvez utiliser la valeur spéciale
me
pour indiquer l'utilisateur actuellement authentifié. - sendAsEmail
- Alias pour lequel vous récupérez les clés. Il s'agit de l'adresse e-mail qui apparaît dans l'en-tête "De" des e-mails envoyés avec cet alias.
Supprimer une clé S/MIME
Utilisez la méthode smimeInfo.delete() pour supprimer la clé S/MIME spécifiée d'un alias. Vous identifiez l'alias cible à l'aide des paramètres suivants :
- userId
- Adresse e-mail de l'utilisateur. Vous pouvez utiliser la valeur spéciale
me
pour indiquer l'utilisateur actuellement authentifié. - sendAsEmail
- Alias pour lequel vous récupérez les clés. Il s'agit de l'adresse e-mail qui apparaît dans l'en-tête "De" des e-mails envoyés avec cet alias.
- id
- Identifiant immuable pour SmimeInfo.
Définir la clé S/MIME par défaut pour un alias
Utilisez la méthode smimeInfo.setDefault() pour marquer la clé S/MIME spécifiée comme clé par défaut pour l'alias spécifié. Vous identifiez l'alias cible à l'aide des paramètres suivants :
- userId
- Adresse e-mail de l'utilisateur. Vous pouvez utiliser la valeur spéciale
me
pour indiquer l'utilisateur actuellement authentifié. - sendAsEmail
- Alias pour lequel vous récupérez les clés. Il s'agit de l'adresse e-mail qui apparaît dans l'en-tête "De" des e-mails envoyés avec cet alias.
- id
- Identifiant immuable pour SmimeInfo.
Exemple de code
Les exemples de code suivants montrent comment utiliser l'API pour gérer les certificats S/MIME d'une organisation comportant plusieurs utilisateurs.
Créer une ressource SmimeInfo pour un certificat S/MIME
L'exemple de code suivant montre comment lire un certificat à partir d'un fichier, l'encoder en chaîne base64url et l'attribuer au champ pkcs12
de la ressource smimeInfo
:
Java
Python
Importer un certificat S/MIME
Pour importer un certificat, appelez smimeInfo.insert
et fournissez la ressource smimeInfo
dans le corps de la requête :
Java
Python
Exemples de gestion des certificats de nombreux utilisateurs
Vous pouvez gérer les certificats de plusieurs utilisateurs de l'organisation à la fois. Les exemples suivants montrent comment gérer les certificats de plusieurs utilisateurs dans un seul appel par lot.
Insérer des certificats à partir d'un fichier CSV
Supposons que vous disposiez d'un fichier CSV listant les ID utilisateur et le chemin d'accès au certificat de chaque utilisateur :
$ 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
Vous pouvez utiliser les appels createSmimeInfo
et insertSmimeInfo
précédents pour importer les certificats comme indiqué dans le fichier CSV :
Python
Vous pouvez utiliser les appels create_smime_info
et insert_smime_info
précédents pour importer les certificats comme indiqué dans le fichier CSV :
Gestion des certificats
Cet exemple combine plusieurs appels de l'API smimeInfo
pour montrer comment gérer les certificats de votre organisation. Il liste les certificats de l'utilisateur et, si le certificat par défaut est expiré ou non défini, il importe le certificat trouvé dans le fichier spécifié. Il définit ensuite comme certificat par défaut celui dont la date d'expiration est la plus éloignée.
Elle est ensuite appelée à partir d'une fonction qui traite un fichier CSV comme dans l'exemple précédent.