Google Workspace erbjuder tjänsten för enkel inloggning (SSO) till kunder med Google Workspace eller Google Workspace for Education. Tjänsten Enkel inloggning i Google Workspace godkänner offentliga nycklar och certifikat som genereras med RSA- eller DSA-algoritmen. Om du vill använda tjänsten måste du generera en uppsättning offentliga och privata nycklar och ett X.509-certifikat som innehåller den offentliga nyckeln. När du har en offentlig nyckel eller ett certifikat måste du registrera det hos Google. Du kan göra detta genom att ladda upp nyckeln eller certifikatet via Googles administratörskonsol.
Hur du genererar nycklar och certifikat beror ofta på vilken utvecklingsplattform och vilket programmeringsspråk du föredrar. Här är flera olika sätt att generera de nycklar och certifikat som krävs av Google Workspace SSO-tjänsten.
Använda OpenSSL
Det finns många metoder för att skapa offentliga och privata nyckelpar, men OpenSSL-verktyget med öppen källkod är ett av de mest populära. Det har porterats till alla större plattformar och tillhandahåller ett enkelt kommandoradsgränssnitt för nyckelgenerering.
Skapa den privata RSA-nyckeln
Privat RSA-nyckelgenerering med OpenSSL omfattar bara ett steg:
openssl genrsa -out rsaprivkey.pem 2048
Det här kommandot genererar en PEM-kodad privat nyckel och lagrar den i filen
rsaprivkey.pem. I det här exemplet skapas en 2048-bitars nyckel som bör fungera för
nästan alla ändamål. Den resulterande privata nyckeln ska hållas hemlig och används för att signera och dekryptera data.
Vissa implementeringar, i synnerhet Java-baserade, kan kräva DER eller PKCS8, som till exempel kan genereras med följande ytterligare steg:
openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
Steg 1 skapar den offentliga nyckeln i DER-format.
I steg 2 genereras den privata nyckeln i formaten
pkcs8 och DER. När du har genererat nycklarna kan du använda dem (rsapubkey.der och rsaprivkey.der).
Skapa en privat DSA-nyckel
DSA-nyckelgenerering omfattar två steg:
openssl dsaparam -out dsaparam.pem 2048openssl gendsa -out dsaprivkey.pem dsaparam.pem
I det första steget skapas en DSA-parameterfil, dsaparam.pem, som i det här fallet
instruerar OpenSSL att skapa en 2048-bitarsnyckel i steg 2. dsaparam.pem-filen är inte i sig en nyckel och kan tas bort när de offentliga och privata nycklarna har skapats. I det andra steget skapas den privata nyckeln i filen
dsaprivkey.pem som ska hållas hemlig.
Exportera nyckeln till ett DER-format (binärt) med hjälp av följande steg:
openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
Steg 1 extraherar den offentliga nyckeln till ett DER-format.
I steg 2 konverteras den privata nyckeln till
pkcs8- och DER-format. När du har gjort detta kan du använda det offentliga (dsapubkey.der) och privata (dsaprivkey.der) nyckelparet
Skapa ett certifikat
När du har nyckelparet är det enkelt att skapa ett X.509-certifikat. Certifikatet innehåller motsvarande offentliga nyckel, tillsammans med viss metadata som rör organisationen som skapade certifikatet. Följ det här steget för att skapa ett självsignerat certifikat från en privat RSA- eller DSA-nyckel:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
När du har svarat på ett antal frågor skapas certifikatet och sparas som dsacert.pem. Det här är filen du laddar upp till Google Workspace via
kontrollpanelen när du konfigurerar enkel inloggning.
Skapa ett certifikatfingeravtryck
Vissa appar kräver ett X.509-certifikatfingeravtryck i stället för själva X.509-certifikatet. Ett fingeravtryck är ett sammandrag av certifikatet i binärt x509-format. Fingeravtryckstypen beror på vilken algoritm som används för att generera fingeravtrycket, till exempel SHA-1 eller SHA-256.
Om du vill skapa ett SHA-256-fingeravtryck från ett X.509-certifikat använder du följande kommando (ersätt med det faktiska certifikatets .pem-filnamn):
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
Med Microsoft Visual Studio för .NET
Microsoft Visual Studio 2005 tillhandahåller verktyg (i katalogen Common7ToolsBin) som kan användas för att generera ett certifikat för användning med Google Workspace. Följ stegen nedan för att skapa det offentliga och privata nyckelparet och certifikatet i .NET:
makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cerpvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
Som standard används RSA-algoritmen i kommandona ovan. I steg 1 används verktyget för att
skapa
certifikat
(makecert.exe) för att skapa ett självsignerat X.509-certifikat med namnet testcert.cer
och motsvarande privata nyckel.
I steg 2 används verktyget
pvk2pfx (pvk2pfx.exe) för att skapa en PFX-fil (Personal Information Exchange) från en
CER- och PVK-fil. PFX innehåller både din offentliga och privata nyckel.
testcert.cer-filen som skapades i steg 1 kan laddas upp till
Google Workspace med kontrollpanelen och testcert.pfx från steg 2
kan användas för att skapa en X509Certificate2-instans (.NET 2.0+) för signering av
SAML-svaret.
Med Keytool i Java
Java-utvecklare kan använda verktyget keytool i standard-JDK för att skapa det offentliga/privata nyckelparet och X.509-certifikatet. keytool är ett verktyg för nyckel- och certifikathantering som gör att användarna kan administrera sina egna offentliga/privata nyckelpar och tillhörande certifikat för användning i autentiseringsscheman som kräver digitala signaturer. keytool lagrar nycklar och certifikat i
ett nyckellager som i standardimplementeringen helt enkelt är en fil (.keystore)
i användarens hemkatalog. Privata nycklar är skyddade med lösenord.
Skapa DSA-nyckelpar
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"keytool -export -alias dsassokey -file dsasso.cer
Steg 1 genererar ett offentligt/privat nyckelpar med storlek 2048 och giltighet på 180 dagar med DSA-algoritmen.
I steg 2 genereras ett X.509-certifikat (dsasso.cer) från den offentliga nyckeln. Sedan laddar du upp dsasso.cer till Google Workspace via kontrollpanelen.
Skapa RSA-nyckelpar
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180keytool -export -alias rsassokey -file rsasso.cer
I steg 1 genereras ett offentligt/privat nyckelpar med storleken 2048 och giltighet på 180 dagar med RSA-algoritmen.
I steg 2 genereras ett X.509-certifikat (rsasso.cer) från den offentliga nyckeln. Sedan
laddar du upp
rsasso.cer till Google Workspace via kontrollpanelen.
Använda Java Cryptography Architecture
Java Cryptography Architecture (JCA) tillhandahåller kärnklasser och gränssnitt för att generera och manipulera säkerhetsegenskaper. JCA omfattar de delar av Java 2 SDK Security API som rör kryptografi. Med det här API:et kan du enkelt generera offentliga och privata nyckelpar i önskad algoritm. Nedan finns en exempelkod som skapar DSA- eller RSA-nycklar som ska användas med Google Workspace SSO-tjänsten.
Skapa ett offentligt och privat nyckelpar
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();
}
}
}
Koden ovan använder KeyPairGenerator för att skapa ett par DSA-nycklar. De genererade nycklarna är i binärt format och matas ut i enskilda filer.
När du har nycklarna kan du registrera den offentliga nyckeln med Google Workspace och använda den privata nyckeln för att signera SAMLResponse. Om du vill generera ett par RSA-nycklar i stället för DSA behöver du bara ersätta "DSA" i koden med "RSA".
Registrera ditt certifikat eller din offentliga nyckel med Google Workspace
När du har gjort den svåra delen med att generera nycklar och certifikat är nästa del väldigt enkel. Om du vill registrera ditt certifikat eller din offentliga nyckel med Google Workspace måste du gå till administratörskonsolen och logga in som administratör. Välj Säkerhet och sedan Konfigurera enkel inloggning (SSO) och fyll i alla fält på sidan under Konfigurera enkel inloggning med extern identitetsleverantör.