Google Workspace erbjuder tjänsten 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 uppsättningen 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 nycklarna och certifikatet 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 populäraste. Det har portats till alla större plattformar och har 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 syften. 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
pkcs8- och DER-format. När du har
genererat dem kan du använda nycklarna (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
Det första steget skapar 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 en nyckel i sig och kan kasseras när de offentliga och privata nycklarna
har skapats. Det andra steget skapar 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 och 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 som du laddar upp till Google Workspace via
kontrollpanelen när du konfigurerar enkel inloggning.
Skapa ett certifikatfingeravtryck
Vissa program kräver ett X.509-certifikatfingeravtryck i stället för själva X.509-certifikatet. Ett fingeravtryck är ett kondensat av certifikatet i x509 binärt format. Fingeravtryckstypen beror på algoritmen 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 namnet på .pem-filen för certifikatet):
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
Med Microsoft Visual Studio för .NET
Microsoft Visual Studio 2005 innehå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
Certificate
Creation
(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 hjälp av kontrollpanelen. 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 som finns i standard-JDK för att
skapa det offentliga/privata nyckelparet och X.509-certifikatet. keytool är ett verktyg för hantering av nycklar och
certifikat som gör att användarna kan hantera sina egna
offentliga/privata nyckelpar och tillhörande certifikat för användning i autentiserings
scheman 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
I steg 1 genereras ett offentligt/privat nyckelpar med storleken 2 048 och giltighetstiden 180 dagar med hjälp av DSA-algoritmen.
I steg 2 genereras ett X.509-certifikat (dsasso.cer) från den offentliga nyckeln. Du
laddar sedan 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 2 048 och giltighet på 180 dagar med RSA-algoritmen.
I steg 2 genereras ett X.509-certifikat (rsasso.cer) från den offentliga nyckeln. Ladda sedan upp
rsasso.cer till Google Workspace via kontrollpanelen.
Använda Java Cryptography Architecture
Java Cryptography Architecture (JCA) tillhandahåller grundläggande klasser och gränssnitt för att generera och manipulera säkerhetsegenskaper. JCA omfattar de delar av Java 2 SDK Security API som är relaterade till kryptografi. Med det här API:et kan du enkelt generera offentliga och privata nyckelpar i önskad algoritm. Nedan finns ett exempel på kod 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 skrivs till enskilda filer.
När du har nycklarna kan du registrera den offentliga nyckeln hos
Google Workspace och använda den privata nyckeln för att signera din 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 certifikatet eller den offentliga nyckeln hos Google Workspace
När du har gjort det svåra med att generera nycklar och certifikat är nästa steg väldigt enkelt. Om du vill registrera certifikatet eller den offentliga nyckeln i Google Workspace måste du öppna administratörskonsolen och logga in som administratör. Välj Säkerhet, sedan Konfigurera enkel inloggning (SSO) och fyll i alla fält på sidan under Konfigurera SSO med extern identitetsleverantör.