O Google Workspace oferece o serviço de Logon único (SSO) aos clientes com o Google Workspace ou o Google Workspace for Education. O serviço Logon único do Google Workspace aceita chaves públicas e certificados gerados com o algoritmo RSA ou DSA. Para usar o serviço, é necessário gerar o conjunto de chaves pública e privada e um certificado X.509 que tenha a chave pública. Após gerar uma chave pública ou um certificado, é preciso fazer o registro no Google. Para isso, basta fazer o upload da chave ou do certificado no Google Admin Console.
O modo como as chaves e os certificados são gerados depende da plataforma de desenvolvimento e da preferência de linguagem de programação. Confira várias maneiras de gerar as chaves e o certificado necessários para o serviço de SSO do Google Workspace.
Como usar o OpenSSL
Embora existam vários métodos para a criação de pares de chaves pública e privada, a ferramenta OpenSSL de código aberto é uma das mais usadas. Ela foi portada para todas as principais plataformas e fornece uma interface de linha de comando simples para a geração de chaves.
Criar a chave privada RSA
A geração da chave privada RSA com o OpenSSL tem apenas uma etapa:
openssl genrsa -out rsaprivkey.pem 2048
Esse comando gera uma chave privada codificada em PEM e a armazena no arquivo
rsaprivkey.pem. Esse exemplo cria uma chave de 2.048 bits, que funciona para
praticamente qualquer finalidade. Essa chave privada deve ser secreta e usada
para assinar e descriptografar dados.
Algumas implementações, principalmente em Java, talvez exijam arquivos DER ou PKCS8, que podem ser gerados com estas etapas adicionais:
openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
A etapa 1 gera a chave pública no formato DER.
A etapa 2 gera a chave privada nos formatos
pkcs8 e DER. Depois de geradas, você pode usar essas chaves (rsapubkey.der e rsaprivkey.der).
Criar uma chave privada DSA
A geração da chave DSA tem duas etapas:
openssl dsaparam -out dsaparam.pem 2048openssl gendsa -out dsaprivkey.pem dsaparam.pem
A primeira etapa cria um arquivo de parâmetro DSA, dsaparam.pem, que, nesse caso, instrui o OpenSSL a criar uma chave de 2.048 bits na etapa 2. O arquivo dsaparam.pem não é propriamente uma chave e pode ser descartado após a criação das chaves pública e privada. A segunda etapa cria a chave privada no arquivo
dsaprivkey.pem, que deve ser mantido em segredo.
Para exportar a chave para um formato DER (binário), siga estas etapas:
openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
A etapa 1 extrai a chave pública no formato DER.
A etapa 2 converte a chave privada nos formatos pkcs8 e DER. Depois disso, você pode usar esse par de chaves pública (dsapubkey.der) e privada (dsaprivkey.der).
Criar um certificado
Quando você tiver o par de chaves, será fácil criar um certificado X.509. O certificado tem a chave pública correspondente, além de alguns metadados relacionados à organização que o criou. Siga esta etapa para criar um certificado autoassinado usando uma chave privada RSA ou DSA:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
Depois que você responde a algumas perguntas, o certificado é criado e salvo como dsacert.pem. Você faz o upload desse arquivo para o Google Workspace no painel de controle ao configurar o SSO.
Criar uma impressão digital de certificado
Alguns aplicativos exigem uma impressão digital do certificado X.509 em vez do próprio certificado X.509. Uma impressão digital é um resumo do certificado no formato binário x509. O tipo de impressão digital depende do algoritmo usado para gerar a impressão digital, como SHA-1 ou SHA-256.
Para criar uma impressão digital SHA-256 de um certificado X.509, use o seguinte comando (substitua o arquivo .pem pelo nome do seu certificado real):
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
Como usar o Microsoft Visual Studio para .NET
O Microsoft Visual Studio 2005 tem utilitários (no diretório Common7ToolsBin) que podem gerar um certificado para uso com o Google Workspace. Siga as etapas abaixo para criar o par de chaves pública e privada e o certificado no .NET:
makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cerpvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
Por padrão, o algoritmo RSA é usado nos comandos acima. A etapa 1 usa a ferramenta Criação de certificado (makecert.exe) para criar um certificado X.509 autoassinado chamado testcert.cer e a chave privada correspondente.
A etapa 2 usa a ferramenta
pvk2pfx (pvk2pfx.exe) para criar um arquivo Personal Information Exchange (PFX) de arquivos
CER e PVK. O PFX contém tanto a sua chave pública quanto a privada.
O arquivo testcert.cer criado na Etapa 1 pode ser enviado ao
Google Workspace usando o painel de controle, e o testcert.pfx da Etapa 2
pode ser usado para criar uma instância X509Certificate2 (.NET 2.0+) e assinar a
resposta SAML.
Como usar o Keytool no Java
Os desenvolvedores Java podem usar o utilitário keytool encontrado no JDK padrão para
criar o par de chaves pública/privada e o certificado X.509. O keytool é um utilitário de gerenciamento de chaves e certificados que permite aos usuários administrar os próprios pares de chaves públicas/privadas e certificados associados para uso em esquemas de autenticação que exigem assinaturas digitais. O keytool armazena chaves e certificados em um "keystore", que, para a implementação padrão, é simplesmente um arquivo (.keystore) no diretório inicial do usuário. As chaves privadas são protegidas por senhas.
Criar pares de chaves DSA
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"keytool -export -alias dsassokey -file dsasso.cer
A etapa 1 gera um par de chaves pública/privada com 2.048 bits e validade de 180 dias usando o algoritmo DSA.
A etapa 2 gera um certificado X.509 (dsasso.cer) da chave pública. Em seguida, faça upload de dsasso.cer para o Google Workspace usando o painel de controle.
Criar pares de chaves RSA
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180keytool -export -alias rsassokey -file rsasso.cer
A etapa 1 gera um par de chaves pública/privada com 2.048 bits e validade de 180 dias usando o algoritmo RSA.
A etapa 2 gera um certificado X.509 (rsasso.cer) da chave pública. Depois, faça o upload de rsasso.cer para o Google Workspace usando o painel de controle.
Como usar a Java Cryptography Architecture
A Java Cryptography Architecture (JCA) fornece as principais classes e interfaces para gerar e manipular propriedades de segurança. A JCA engloba partes da Java 2 SDK Security API relacionadas à criptografia. Usando essa API, é fácil gerar pares de chaves públicas e privadas no algoritmo desejado. Veja abaixo um exemplo de código que cria chaves DSA ou RSA para serem usadas com o serviço SSO do Google Workspace.
Criar um par de chaves pública e privada
import java.io.*;
import java.security.*;
public class KeyGenDSA {
public static void main(String[] args) {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
SecureRandom random = SecureRandom.getInstanceStrong();
keyGen.initialize(2048, random);
KeyPair pair = keyGen.generateKeyPair();
PrivateKey priv = pair.getPrivate();
PublicKey pub = pair.getPublic();
byte[] encPriv = priv.getEncoded();
FileOutputStream privfos = new FileOutputStream("DSAPrivateKey.key");
privfos.write(encPriv);
privfos.close();
byte[] encPub = pub.getEncoded();
FileOutputStream pubfos = new FileOutputStream("DSAPublicKey.key");
pubfos.write(encPub);
pubfos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
O código acima usa o KeyPairGenerator para criar um par de chaves DSA. As
chaves geradas estarão em formato binário e serão gravadas em arquivos individuais.
Quando você tiver as chaves, poderá registrar a chave pública no Google Workspace e usar a chave privada para assinar o SAMLResponse. Para
gerar um par de chaves RSA em vez de DSA, é só substituir
"DSA" no código por "RSA".
Registre seu certificado ou chave pública no Google Workspace
Depois de realizar a parte mais complexa, que é gerar chaves e certificados, você verá que o restante é bem simples. Para registrar seu certificado ou chave pública no Google Workspace, acesse o Admin Console e faça login como administrador. Selecione Segurança, depois Configurar Logon único (SSO) e preencha todos os campos da página em Configurar SSO com provedor de identidade de terceiros.