A API Gmail S/MIME oferece acesso programático para gerenciar certificados de e-mail S/MIME de usuários em um domínio do Google Workspace.
Um administrador precisa ativar o S/MIME para o domínio para que os certificados funcionem.
O padrão S/MIME oferece uma especificação para criptografia de chave pública e assinatura de dados MIME. Ao configurar certificados S/MIME na conta de um usuário, o Gmail usa esse certificado das seguintes maneiras:
- O Gmail usa o certificado e a chave privada do usuário para assinar os e-mails enviados.
- O Gmail usa a chave privada do usuário para descriptografar os e-mails recebidos.
- O Gmail usa o certificado e a chave pública do destinatário para criptografar os e-mails enviados.
- O Gmail usa o certificado e a chave pública do remetente para verificar os e-mails recebidos.
Você gera certificados S/MIME individuais e faz upload deles usando a API. Cada certificado S/MIME é para um alias específico de uma conta de e-mail do usuário. Os aliases incluem o endereço de e-mail principal e os endereços personalizados "Enviar como". Um único certificado S/MIME é marcado como padrão para cada alias.
Como autorizar o acesso à API
Há duas formas de autorizar o acesso à API:
- Você pode usar uma conta de serviço com delegação de autoridade em todo o domínio. Para uma explicação desses termos, consulte Termos da visão geral de autenticação e autorização. Para informações sobre como ativar essa opção, consulte Criar uma conta de serviço com delegação de autoridade em todo o domínio
- Você pode usar um fluxo OAuth2 padrão que exige o consentimento do usuário final para receber um token de acesso do OAuth2. Para mais informações, consulte a Visão geral da autenticação e autorização. Para usar essa opção, o administrador do domínio precisa marcar a caixa de seleção "Acesso do usuário final à API S/MIME ativado" no painel de controle do domínio.
Escopos da ACL
Essa API depende dos mesmos escopos de ACL que os métodos Gmail sendAs:
- gmail.settings.basic
- Esse escopo é necessário para atualizar o S/MIME principal do recurso "Enviar como".
- gmail.settings.sharing
- Esse escopo é necessário para atualizar de S/MIME personalizados.
Como usar a API
O recurso users.settings.sendAs.smimeInfo fornece os métodos usados para gerenciar certificados S/MIME. Cada certificado está associado a um alias de envio como de um usuário.
Fazer upload de uma chave S/MIME
Use o método smimeInfo.insert() para fazer upload de uma nova chave S/MIME para um alias de um usuário. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. Você pode usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para o qual você está fazendo upload da chave. Esse é o endereço de e-mail que aparece no cabeçalho "De:" das mensagens enviadas usando esse alias.
O certificado S/MIME e a chave privada precisam estar presentes no campo pkcs12
nesse formato. Nenhum outro campo pode ser definido na solicitação. O campo PKCS12 deve conter a chave S/MIME do usuário e a cadeia de certificados de assinatura. A API realiza validações padrão nesse campo antes de aceitá-lo, verificando o seguinte:
- O assunto corresponde ao endereço de e-mail especificado.
- As expirações são válidas.
- A autoridade certificadora (CA) emissora está na nossa lista de confiança.
- Os certificados atendem às restrições técnicas do Gmail.
Se a chave estiver criptografada, a senha vai estar no campo encryptedKeyPassword
. As chamadas insert() bem-sucedidas vão retornar o ID do smimeInfo, que pode ser
usado para se referir à chave no futuro.
Listar as chaves S/MIME de um usuário
Use o método smimeInfo.list() para retornar a lista de chaves S/MIME do usuário e do alias especificados. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. Você pode usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para listar chaves. Esse é o endereço de e-mail que aparece no cabeçalho "De:" das mensagens enviadas usando esse alias.
Recuperar as chaves S/MIME de um alias
Use o método smimeInfo.get() para retornar as chaves S/MIME específicas de um alias "Enviar como" de um usuário. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. Você pode usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para o qual você está recuperando as chaves. Esse é o endereço de e-mail que aparece no cabeçalho "De:" das mensagens enviadas usando esse alias.
Excluir uma chave S/MIME
Use o método smimeInfo.delete() para excluir a chave S/MIME especificada de um alias. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. Você pode usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para o qual você está recuperando as chaves. Esse é o endereço de e-mail que aparece no cabeçalho "De:" das mensagens enviadas usando esse alias.
- ID
- O ID imutável do SmimeInfo.
Definir a chave S/MIME padrão para um alias
Use o método smimeInfo.setDefault() para marcar a chave S/MIME especificada como padrão para o alias especificado. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. Você pode usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para o qual você está recuperando as chaves. Esse é o endereço de e-mail que aparece no cabeçalho "De:" das mensagens enviadas usando esse alias.
- ID
- O ID imutável do SmimeInfo.
Código de amostra
Os exemplos de código a seguir demonstram o uso da API para gerenciar certificados S/MIME de uma organização com vários usuários.
Como criar um recurso SmimeInfo para um certificado S/MIME
O exemplo de código a seguir demonstra como ler um certificado de um arquivo, codificar
para uma string base64url e atribuir ao campo pkcs12
do recurso smimeInfo
:
Java
Python
Como fazer upload de um certificado S/MIME
Para fazer upload de um certificado, chame
smimeInfo.insert
e forneça o recurso smimeInfo
no corpo da solicitação:
Java
Python
Exemplos de gerenciamento de certificados de muitos usuários
Talvez você queira gerenciar certificados para muitos usuários na organização de uma só vez. Os exemplos a seguir mostram como gerenciar certificados para vários usuários em uma chamada em lote.
Inserir certificados de um arquivo CSV
Suponha que você tenha um arquivo CSV que liste IDs de usuários e o caminho para o certificado de cada um:
$ 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
Você pode usar as chamadas createSmimeInfo
e insertSmimeInfo
de antes para fazer upload dos certificados conforme especificado no arquivo CSV:
Python
Você pode usar as chamadas create_smime_info
e insert_smime_info
de antes para fazer upload dos certificados conforme especificado no arquivo CSV:
Gerenciamento de certificados
Este exemplo combina várias chamadas da API smimeInfo
para mostrar como você pode gerenciar certificados para sua organização. Ele lista os certificados do
usuário e, se o certificado padrão estiver expirado ou não estiver definido, faz upload do certificado encontrado no
arquivo especificado. Em seguida, ele define como padrão o certificado com a data de validade mais distante.
Em seguida, ele é chamado de uma função que processa um arquivo CSV, como no exemplo anterior.