A API Gmail S/MIME oferece acesso programático para gerenciar certificados de e-mail S/MIME para usuários em um Google Workspace domínio.
Um administrador precisa ativar o S/MIME para o domínio para que os certificados funcionem.
O padrão S/MIME fornece uma especificação para criptografia de chave pública e assinatura de dados MIME. A configuração de certificados S/MIME na conta de um usuário faz com que o Gmail use esse certificado das seguintes maneiras:
- O Gmail usa o certificado e a chave privada do usuário para assinar e-mails enviados.
- O Gmail usa a chave privada do usuário para descriptografar o e-mail recebido.
- O Gmail usa o certificado e a chave pública do destinatário para criptografar o e-mail enviado.
- O Gmail usa o certificado e a chave pública do remetente para verificar o e-mail recebido.
Você gera certificados S/MIME individuais e os envia 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:
- É possível 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 da autenticação e autorização. Para saber como ativar essa opção, consulte Criar uma conta de serviço com delegação de autoridade em todo o domínio.
- É possível usar um fluxo OAuth2 padrão que exige o consentimento do usuário final para receber um token de acesso Oauth2. Para mais informações, consulte a Visão geral de autenticação e autorização. Para usar essa opção, o administrador do domínio precisa ativar 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 sendAs do Gmail:
- gmail.settings.basic
- Esse escopo é necessário para atualizar o S/MIME do remetente principal.
- gmail.settings.sharing
- Esse escopo é necessário para atualizar o S/MIME de personalizado.
Como usar a API
O recurso users.settings.sendAs.smimeInfo fornece os métodos usados para gerenciar certificados S/MIME. Cada certificado é associado a um alias de envio para um usuário.
Fazer upload de uma chave S/MIME
Use o método smimeInfo.insert() para enviar uma nova chave S/MIME para um alias pertencente a um usuário. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. É possível usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para o qual você está fazendo o upload da chave. É 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 precisa 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 datas de validade são válidas.
- A autoridade certificadora (AC) emissora está na nossa lista de confiança.
- Os certificados correspondem às restrições técnicas do Gmail.
Se a chave estiver criptografada, a senha precisará 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 para o alias especificado. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. É possível usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para listar chaves. É o endereço de e-mail que aparece no cabeçalho "De:" das mensagens enviadas usando esse alias.
Extrair as chaves S/MIME de um alias
Use o método smimeInfo.get() para retornar as chaves S/MIME específicas de um alias de envio para um usuário. Identifique o alias de destino usando os seguintes parâmetros:
- userId
- O endereço de e-mail do usuário. É possível usar o valor especial
me
para indicar o usuário autenticado no momento. - sendAsEmail
- O alias para o qual você está recuperando as chaves. É 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. É possível 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. É possível 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 abaixo demonstram como usar a 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 a leitura de um certificado do arquivo, a codificação
em uma string base64url e a atribuição 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 vários usuários
Talvez você queira gerenciar certificados de vários 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 lista os IDs de usuários e o caminho para o certificado de cada usuário:
$ 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
anteriores para fazer upload dos certificados conforme especificado no arquivo CSV:
Python
Você pode usar as chamadas create_smime_info
e insert_smime_info
anteriores 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
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, ele fará o upload do certificado encontrado no
arquivo especificado. Em seguida, ele define o certificado com a data de validade mais distante
como padrão.
Isso é chamado de uma função que processa um arquivo CSV, como no exemplo anterior.