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 de Logon único do Google Workspace aceita chaves públicas e certificados gerados com o algoritmo RSA ou DSA. Para usá-lo, é necessário gerar o conjunto de chaves pública e privada e um certificado X.509 que tenha a chave pública. Depois de ter uma chave pública ou um certificado, você precisa registrá-lo 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 diferentes 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. Este exemplo cria uma chave de 2.048 bits, que funciona para quase todos os fins. 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. Após fazer isso, 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 contém a chave pública correspondente, além de alguns metadados relacionados à organização que criou o certificado. Siga esta etapa para criar um certificado assinado usando uma chave privada RSA ou DSA:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
Depois de responder a algumas perguntas, o certificado será criado e salvo como dsacert.pem. Esse é o arquivo que você faz upload no Google Workspace pelo painel de controle ao configurar o SSO.
Criar uma impressão digital do 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 gerá-la, 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 for .NET
O Microsoft Visual Studio 2005 tem utilitários (no diretório Common7ToolsBin) que podem gerar um certificado para 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 PVK e CER. O PFX contém suas chaves pública e privada.
O arquivo testcert.cer criado na Etapa 1 pode ser enviado ao Google Workspace no 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 de 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 que os usuários administrem os próprios pares de chaves pública/privada e os certificados associados para uso em esquemas de autenticação que exijam assinaturas digitais. O keytool armazena chaves e certificados em um "keystore" que, na implantação padrão, é simplesmente um arquivo (.keystore) no diretório principal 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 o upload de dsasso.cer no 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. Em seguida, faça o upload de
rsasso.cer no 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 a geração e a manipulação de 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 com o 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 são geradas em formato binário e arquivos separados.
Depois de ter as chaves, você pode registrar a chave pública no Google Workspace e usar a chave privada para assinar sua SAMLResponse. Para
gerar um par de chaves RSA em vez de DSA, basta substituir
"DSA" no código por "RSA".
Registrar 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, você precisa acessar o Admin Console e fazer login como administrador. Selecione Segurança e Configurar Logon único (SSO). Preencha todos os campos da página em Configurar Logon único de provedor de identidade de terceiros.