Google Workspace biedt Single Sign-On (SSO) aan klanten met Google Workspace of Google Workspace voor Onderwijs. De Single Sign-On-service van Google Workspace accepteert openbare sleutels en certificaten die zijn gegenereerd met het RSA- of DSA-algoritme. Om de service te gebruiken, moet u een set openbare en privésleutels genereren, evenals een X.509-certificaat dat de openbare sleutel bevat. Zodra u een openbare sleutel of certificaat hebt, moet u deze registreren bij Google. Dit kunt u doen door de sleutel of het certificaat te uploaden via uw Google-beheerconsole.
De manier waarop je sleutels en certificaten genereert, hangt vaak af van je ontwikkelplatform en voorkeursprogrammeertaal. Hieronder vind je verschillende manieren om de sleutels en het certificaat te genereren die nodig zijn voor de Google Workspace SSO-service.
OpenSSL gebruiken
Hoewel er veel methoden zijn om publieke en private sleutelparen te creëren, is de open-source tool OpenSSL een van de populairste. Het is beschikbaar voor alle belangrijke platforms en biedt een eenvoudige commandoregelinterface voor het genereren van sleutels.
Maak de RSA-privésleutel aan.
Het genereren van een RSA-privésleutel met OpenSSL gebeurt in slechts één stap:
openssl genrsa -out rsaprivkey.pem 2048
Met dit commando wordt een PEM-gecodeerde privésleutel gegenereerd en opgeslagen in het bestand rsaprivkey.pem . Dit voorbeeld genereert een 2048-bits sleutel, die voor vrijwel elk doel geschikt is. De resulterende privésleutel moet geheim worden gehouden en wordt gebruikt om gegevens te ondertekenen en te ontsleutelen.
Sommige implementaties, met name Java-gebaseerde, vereisen mogelijk DER of PKCS8, die bijvoorbeeld gegenereerd kunnen worden met behulp van de volgende aanvullende stappen:
-
openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.der -
openssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
Stap 1 genereert de publieke sleutel in DER-formaat.
In stap 2 wordt de privésleutel gegenereerd in PKCS8- en DER-formaat. Zodra deze gegenereerd zijn, kunt u ze gebruiken ( rsapubkey.der en rsaprivkey.der ).
Maak een DSA-privésleutel aan.
Het genereren van een DSA-sleutel omvat twee stappen:
-
openssl dsaparam -out dsaparam.pem 2048 -
openssl gendsa -out dsaprivkey.pem dsaparam.pem
De eerste stap creëert een DSA-parameterbestand, dsaparam.pem , dat in dit geval OpenSSL instrueert om in stap 2 een 2048-bits sleutel te genereren. Het bestand dsaparam.pem is zelf geen sleutel en kan worden verwijderd nadat de publieke en privésleutels zijn aangemaakt. De tweede stap creëert daadwerkelijk de privésleutel in het bestand dsaprivkey.pem , dat geheim moet blijven.
Om de sleutel naar een DER-formaat (binair) te exporteren, kunt u de volgende stappen volgen:
-
openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.der -
openssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
Stap 1 extraheert de publieke sleutel naar een DER-formaat.
In stap 2 wordt de privésleutel omgezet naar het PKCS8- en DER-formaat. Zodra dit is gedaan, kunt u dit openbare ( dsapubkey.der ) en privésleutelpaar ( dsaprivkey.der ) gebruiken.
Een certificaat aanmaken
Zodra je je sleutelpaar hebt, is het eenvoudig om een X.509-certificaat aan te maken. Het certificaat bevat de bijbehorende publieke sleutel, samen met metadata over de organisatie die het certificaat heeft aangemaakt. Volg deze stappen om een zelfondertekend certificaat te maken met een RSA- of DSA-privésleutel:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
Nadat je een aantal vragen hebt beantwoord, wordt het certificaat aangemaakt en opgeslagen als dsacert.pem . Dit is het bestand dat je via het Configuratiescherm uploadt naar Google Workspace wanneer je SSO configureert.
Maak een certificaatvingerafdruk aan.
Sommige applicaties vereisen een X.509-certificaatvingerafdruk in plaats van het X.509-certificaat zelf. Een vingerafdruk is een hash van het certificaat in binaire X.509-indeling. Het type vingerafdruk is afhankelijk van het algoritme dat is gebruikt om de vingerafdruk te genereren, zoals SHA-1 of SHA-256.
Om een SHA-256-vingerafdruk te maken van een X.509-certificaat, gebruikt u de volgende opdracht (vervang door de naam van uw daadwerkelijke certificaatbestand (.pem)):
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
Microsoft Visual Studio gebruiken voor .NET
Microsoft Visual Studio 2005 biedt hulpprogramma's (in de map Common7ToolsBin ) waarmee een certificaat voor gebruik met Google Workspace kan worden gegenereerd. Volg de onderstaande stappen om het openbare en privésleutelpaar en het certificaat in .NET te maken:
-
makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cer -
pvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
Standaard wordt het RSA-algoritme gebruikt in de bovenstaande commando's. Stap 1 gebruikt de Certificate Creation Tool ( makecert.exe ) om een zelfondertekend X.509-certificaat met de naam testcert.cer en de bijbehorende privésleutel te maken.
In stap 2 wordt de pvk2pfx- tool ( pvk2pfx.exe ) gebruikt om een Personal Information Exchange (PFX)-bestand te maken van een CER- en een PVK-bestand. Het PFX-bestand bevat zowel uw publieke als uw privésleutel.
Het in stap 1 gemaakte testcert.cer bestand kan via het Configuratiescherm naar Google Workspace worden geüpload; en testcert.pfx uit stap 2 kan worden gebruikt om een X509Certificate2 instantie (.NET 2.0+) te maken voor het ondertekenen van het SAML-antwoord.
Keytool gebruiken in Java
Java-ontwikkelaars kunnen het hulpprogramma keytool dat standaard in de JDK is opgenomen, gebruiken om het publieke/private sleutelpaar en het X.509-certificaat aan te maken. keytool is een hulpprogramma voor sleutel- en certificaatbeheer waarmee gebruikers hun eigen publieke/private sleutelparen en bijbehorende certificaten kunnen beheren voor gebruik in authenticatieschema's die digitale handtekeningen vereisen. keytool slaat sleutels en certificaten op in een "keystore", wat in de standaardimplementatie simpelweg een bestand ( .keystore ) in de thuismap van de gebruiker is. Privésleutels worden beveiligd met wachtwoorden.
Maak DSA-sleutelparen aan
-
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA" -
keytool -export -alias dsassokey -file dsasso.cer
Stap 1 genereert een publiek/privaat sleutelpaar met een grootte van 2048 en een geldigheidsduur van 180 dagen met behulp van het DSA-algoritme.
In stap 2 wordt een X.509-certificaat ( dsasso.cer ) gegenereerd op basis van de openbare sleutel. Vervolgens uploadt u dsasso.cer naar Google Workspace via het Configuratiescherm.
Maak RSA-sleutelparen aan
-
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180 -
keytool -export -alias rsassokey -file rsasso.cer
Stap 1 genereert een publiek/privaat sleutelpaar met een grootte van 2048 en een geldigheidsduur van 180 dagen met behulp van het RSA-algoritme.
In stap 2 wordt een X.509-certificaat ( rsasso.cer ) gegenereerd op basis van de openbare sleutel. Vervolgens uploadt u rsasso.cer naar Google Workspace via het Configuratiescherm.
Gebruikmakend van Java-cryptografiearchitectuur
De Java Cryptography Architecture (JCA) biedt kernklassen en interfaces voor het genereren en manipuleren van beveiligingseigenschappen. De JCA omvat de onderdelen van de Java 2 SDK Security API die betrekking hebben op cryptografie. Met deze API kunt u eenvoudig publieke en private sleutelparen genereren in het gewenste algoritme. Hieronder vindt u een voorbeeldcode voor het aanmaken van DSA- of RSA-sleutels die gebruikt kunnen worden met de Google Workspace SSO-service.
Maak een publiek en een privésleutelpaar aan.
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();
}
}
}
De bovenstaande code gebruikt de KeyPairGenerator om een paar DSA-sleutels te genereren. De gegenereerde sleutels zijn in binaire vorm en worden naar afzonderlijke bestanden uitgevoerd. Zodra u de sleutels hebt, kunt u de publieke sleutel registreren bij Google Workspace en de privésleutel gebruiken om uw SAMLResponse te ondertekenen. Om in plaats van DSA-sleutels een paar RSA-sleutels te genereren, hoeft u alleen maar "DSA" in de code te vervangen door "RSA" .
Registreer je certificaat of openbare sleutel bij Google Workspace.
Nadat je het lastige gedeelte van het genereren van sleutels en certificaten hebt voltooid, is het volgende deel heel eenvoudig. Om je certificaat of openbare sleutel bij Google Workspace te registreren, ga je naar de beheerdersconsole en log je in als beheerder. Selecteer Beveiliging , vervolgens Eenmalige aanmelding (SSO) instellen en vul alle velden in op de pagina onder SSO instellen met een externe identiteitsprovider .