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ê poderá 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ê poderá 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 do certificado
Alguns aplicativos exigem uma impressão digital de 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 suas chaves pública e 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ública/privada 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. Com essa API, é fácil gerar pares de chaves privada e pública em qualquer algoritmo. Confira abaixo um exemplo de código que cria chaves DSA ou RSA para serem usadas no serviço de 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" por "RSA" no código.
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.