Ce document explique comment utiliser les certificats d'e-mail S/MIME dans l'API Gmail.
L'API Gmail permet d'accéder par programmation aux certificats d'e-mails S/MIME pour les utilisateurs d'un domaine Google Workspace.
Un administrateur doit activer S/MIME hébergé pour le domaine afin que les certificats fonctionnent.
La norme S/MIME fournit une spécification pour le chiffrement à clé publique et la signature des données MIME. Lorsque des certificats S/MIME sont configurés dans un compte utilisateur, Gmail les utilise de la manière suivante :
Signez les e-mails sortants avec le certificat utilisateur et la clé privée.
Déchiffrez les e-mails entrants avec la clé privée de l'utilisateur.
Chiffrez les e-mails sortants avec le certificat et la clé publique du destinataire.
Validez les e-mails entrants à l'aide du certificat de l'expéditeur et de la clé publique.
Vous pouvez générer des certificats S/MIME individuels et les importer à l'aide de l'API Gmail. Chaque certificat S/MIME est associé à un alias spécifique pour un compte de messagerie utilisateur. Les alias incluent l'adresse e-mail principale et les adresses "Envoyer en tant que" personnalisées. L'API marque un seul certificat S/MIME comme certificat par défaut pour chaque alias.
Pour en savoir plus sur les alias, consultez Gérer les alias et les signatures avec l'API Gmail.
Autoriser l'accès à l'API
Pour autoriser l'accès à l'API Gmail, utilisez l'une des méthodes suivantes :
Utilisez un compte de service avec délégation de l'autorité au niveau du domaine. Pour en savoir plus sur ces termes, consultez En savoir plus sur l'authentification et l'autorisation. Pour activer cette option, consultez Créer des identifiants d'accès.
Utilisez un flux OAuth 2.0 standard qui nécessite le consentement de l'utilisateur final pour obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus, consultez En savoir plus sur l'authentification et l'autorisation.
Pour utiliser cette option, l'administrateur du domaine doit cocher la case Activer le chiffrement S/MIME pour l'envoi et la réception des e-mails dans la console d'administration Google. Pour en savoir plus, consultez Activer S/MIME hébergé dans la console d'administration Google.
Champs d'application des LCA
L'API Gmail 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 principal.SendAsgmail.settings.sharing: ce champ d'application est requis pour mettre à jour le from S/MIME personnalisé.
Configurer les clés S/MIME
La ressource settings.sendAs.smimeInfo fournit plusieurs méthodes pour gérer les certificats S/MIME. Chaque certificat est associé à un alias "Envoyer en tant que" pour un utilisateur.
Pour déterminer les alias "Envoyer en tant que" d'un utilisateur, utilisez la méthode settings.sendAs.list sur la ressource settings.sendAs.
Importer une clé S/MIME
Utilisez la méthode settings.sendAs.smimeInfo.insert sur la ressource settings.sendAs.smimeInfo pour importer une nouvelle clé S/MIME pour un alias appartenant à un utilisateur. Identifiez l'alias cible à l'aide des paramètres de chemin d'accès suivants :
userId: adresse e-mail de l'utilisateur. Utilisez la valeur spécialemepour indiquer l'utilisateur authentifié.sendAsEmail: alias pour lequel vous importez la clé. Cette adresse e-mail apparaît dans l'en-têteFrom: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 contient à 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 la liste des autorités de certification approuvées par Google.
- Les certificats respectent les contraintes techniques de Gmail.
Si la clé est chiffrée, le mot de passe doit figurer dans le champ encryptedKeyPassword. Un appel de méthode settings.sendAs.smimeInfo.insert réussi renvoie la ressource settings.sendAs.smimeInfo id utilisée pour faire référence à la clé à l'avenir.
Lister les clés S/MIME d'un utilisateur
Utilisez la méthode settings.sendAs.smimeInfo.list sur la ressource settings.sendAs.smimeInfo pour renvoyer la liste des clés S/MIME pour l'utilisateur et l'alias spécifiés. Identifiez l'alias cible à l'aide des paramètres de chemin d'accès suivants :
userId: adresse e-mail de l'utilisateur. Utilisez la valeur spécialemepour indiquer l'utilisateur authentifié.sendAsEmail: alias pour lequel lister les clés. Cette adresse e-mail apparaît dans l'en-têteFrom:des e-mails envoyés avec cet alias.
Récupérer les clés S/MIME pour un alias
Utilisez la méthode settings.sendAs.smimeInfo.get sur la ressource settings.sendAs.smimeInfo pour renvoyer les clés S/MIME spécifiques à un alias "Envoyer en tant que" pour un utilisateur donné. Identifiez l'alias cible à l'aide des paramètres de chemin d'accès suivants :
userId: adresse e-mail de l'utilisateur. Utilisez la valeur spécialemepour indiquer l'utilisateur authentifié.sendAsEmail: alias pour lequel vous récupérez les clés. Cette adresse e-mail apparaît dans l'en-têteFrom:des e-mails envoyés avec cet alias.
Supprimer une clé S/MIME
Utilisez la méthode settings.sendAs.smimeInfo.delete sur la ressource settings.sendAs.smimeInfo pour supprimer la clé S/MIME spécifiée d'un alias. Identifiez l'alias cible à l'aide des paramètres de chemin d'accès suivants :
userId: adresse e-mail de l'utilisateur. Utilisez la valeur spécialemepour indiquer l'utilisateur authentifié.sendAsEmail: alias pour lequel vous supprimez les clés. Cette adresse e-mail apparaît dans l'en-têteFrom:des e-mails envoyés avec cet alias.id: ID immuable dusmimeInfo.
Définir la clé S/MIME par défaut pour un alias
Utilisez la méthode settings.sendAs.smimeInfo.setDefault sur la ressource settings.sendAs.smimeInfo pour marquer la clé S/MIME spécifiée comme clé par défaut pour l'alias spécifié. Identifiez l'alias cible à l'aide des paramètres de chemin d'accès suivants :
userId: adresse e-mail de l'utilisateur. Utilisez la valeur spécialemepour indiquer l'utilisateur authentifié.sendAsEmail: alias pour lequel définir les clés par défaut. Cette adresse e-mail apparaît dans l'en-têteFrom:des e-mails envoyés avec cet alias.id: ID immuable dusmimeInfo.
Exemples de code
Les exemples de code suivants montrent comment utiliser l'API Gmail pour gérer les certificats S/MIME d'une organisation comportant plusieurs utilisateurs :
Créer une ressource smimeInfo pour un certificat S/MIME
Cet exemple de code montre comment lire un certificat à partir d'un fichier, l'encoder en chaîne Base64URL et l'attribuer au champ pkcs12 de la ressource settings.sendAs.smimeInfo :
Java
Python
Importer un certificat S/MIME
Pour importer un certificat, appelez la méthode settings.sendAs.smimeInfo.insert et spécifiez la ressource settings.sendAs.smimeInfo dans le corps de la requête :
Java
Python
Gérer les certificats de plusieurs utilisateurs
Ces exemples de code montrent comment gérer les certificats de plusieurs utilisateurs d'une organisation en un seul appel par lot :
Insérer des certificats à partir d'un fichier CSV
Voici un exemple de 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 exemples CreateSmimeInfo et InsertSmimeInfo pour importer les certificats des utilisateurs spécifiés dans un fichier CSV :
Python
Vous pouvez utiliser les exemples create_smime_info et insert_smime_info pour importer les certificats des utilisateurs spécifiés dans un fichier CSV :
Gestion des certificats
Cet exemple combine plusieurs méthodes de la ressource settings.sendAs.smimeInfo pour montrer comment gérer les certificats de votre organisation. Elle liste les certificats de l'utilisateur. Si le certificat par défaut a expiré ou n'est pas 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.
Cette fonction traite ensuite un fichier CSV, comme dans l'exemple précédent Insérer des certificats à partir d'un fichier CSV.
Java
Python
Articles associés
- Gérer les alias et les signatures avec l'API Gmail
- Choisir les habilitations de l'API Gmail
- Activer S/MIME hébergé pour le chiffrement des messages