Google Workspace bietet Kunden mit Google Workspace oder Google Workspace for Education die Einmalanmeldung (SSO) an. Der Dienst für die Google Workspace-Einmalanmeldung akzeptiert öffentliche Schlüssel und Zertifikate, die mit dem RSA- oder DSA-Algorithmus generiert wurden. Um den Dienst zu nutzen, müssen Sie ein Schlüsselpaar mit einem öffentlichen und einem privaten Schlüssel generieren, sowie ein X.509-Zertifikat, das den öffentlichen Schlüssel enthält. Danach müssen der öffentliche Schlüssel bzw. das Zertifikat bei Google registriert werden. Laden Sie hierfür einfach den Schlüssel oder das Zertifikat über die Google Admin-Konsole hoch.
Wie Sie Schlüssel und Zertifikate generieren, hängt in der Regel von der verwendeten Entwicklungsplattform und Programmiersprache ab. Im Folgenden finden Sie verschiedene Möglichkeiten, um die für den Google Workspace-SSO-Dienst benötigten Schlüssel und Zertifikate zu generieren.
OpenSSL verwenden
Es gibt viele Methoden zum Erstellen von Schlüsselpaaren mit einem öffentlichen und einem privaten Schlüssel. Zu den beliebtesten zählt das Open Source-Tool OpenSSL. Es ist auf allen gängigen Plattformen verfügbar und ermöglicht das Generieren von Schlüsseln über eine einfache Befehlszeilenschnittstelle.
Privaten RSA-Schlüssel erstellen
Ein privater RSA-Schlüssel lässt sich mit OpenSSL in nur einem Schritt generieren:
openssl genrsa -out rsaprivkey.pem 2048
Damit wird ein PEM-codierter privater Schlüssel erstellt und in der Datei rsaprivkey.pem gespeichert. Der in diesem Beispiel erstellte Schlüssel ist ein 2.048-Bit-Schlüssel, der für praktisch alle Zwecke verwendet werden kann. Dieser private Schlüssel dient der Signatur und Entschlüsselung von Daten und sollte geheim gehalten werden.
Für einige Implementierungen, insbesondere Implementierungen auf Java-Basis, ist DER oder PKCS8 erforderlich. Diese Formate lassen sich mit den folgenden zusätzlichen Schritten generieren:
openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
In Schritt 1 wird der öffentliche Schlüssel im DER-Format generiert.
In Schritt 2 wird der private Schlüssel im pkcs8- und im DER-Format generiert. Anschließend können Sie diese Schlüssel nutzen (rsapubkey.der und rsaprivkey.der).
Privaten DSA-Schlüssel erstellen
Ein DSA-Schlüssel wird in zwei Schritten erstellt:
openssl dsaparam -out dsaparam.pem 2048openssl gendsa -out dsaprivkey.pem dsaparam.pem
Im ersten Schritt wird die DSA-Parameterdatei dsaparam.pem erstellt, mit der OpenSSL angewiesen wird, einen 2.048-Bit-Schlüssel zu erstellen (Schritt 2). Die Datei dsaparam.pem selbst ist kein Schlüssel und kann gelöscht werden, nachdem der öffentliche und der private Schlüssel erstellt wurden. Im zweiten Schritt wird in der Datei dsaprivkey.pem der private Schlüssel erstellt, der geheim gehalten werden sollte.
Gehen Sie folgendermaßen vor, um den Schlüssel in ein binäres Format (DER) zu exportieren:
openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
In Schritt 1 wird der öffentliche Schlüssel in ein DER-Format extrahiert.
In Schritt 2 wird der private Schlüssel in das pkcs8- und in das DER-Format konvertiert. Anschließend können Sie dieses Paar aus öffentlichem Schlüssel (dsapubkey.der) und privatem Schlüssel (dsaprivkey.der) verwenden.
Zertifikat erstellen
Wenn Sie das Schlüsselpaar haben, lässt sich ganz einfach ein X.509-Zertifikat erstellen. Das Zertifikat enthält den entsprechenden öffentlichen Schlüssel und darüber hinaus einige Metadaten zu der Organisation, die das Zertifikat erstellt hat. Gehen Sie wie folgt vor, um ein selbst signiertes Zertifikat aus einem privaten RSA- oder DSA-Schlüssel zu erstellen:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
Sie müssen einige Fragen beantworten. Dann wird das Zertifikat erstellt und als dsacert.pem gespeichert. Dies ist die Datei, die Sie über das Steuerfeld in Google Workspace hochladen, wenn Sie die SSO konfigurieren.
Zertifikatfingerabdruck erstellen
Für einige Anwendungen ist ein X.509-Zertifikatfingerabdruck statt des X.509-Zertifikats erforderlich. Ein Fingerabdruck ist ein Hashwert des Zertifikats im x509-Binärformat. Der Fingerabdrucktyp hängt vom Algorithmus ab, mit dem der Fingerabdruck erzeugt wird, z. B. SHA-1 oder SHA-256.
Verwenden Sie den folgenden Befehl, um einen SHA-256-Fingerabdruck aus einem X.509-Zertifikat zu erstellen .Ersetzen Sie dabei den PEM-Dateinamen durch Ihren eigenen PEM-Dateinamen:
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
Microsoft Visual Studio .NET
Im Verzeichnis Common7ToolsBin von Microsoft Visual Studio 2005 finden Sie Dienstprogramme, mit denen Sie ein Zertifikat für die Verwendung mit Google Workspace generieren können. So erstellen Sie das Schlüsselpaar mit öffentlichem und privatem Schlüssel sowie das Zertifikat in .NET:
makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cerpvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
In den oben stehenden Befehlen wird standardmäßig der RSA-Algorithmus verwendet. In Schritt 1 wird mit dem Tool zum Erstellen von Zertifikaten (makecert.exe) ein selbst signiertes X.509-Zertifikat mit dem Namen testcert.cer und der zugehörige private Schlüssel erstellt.
In Schritt 2 wird mit dem pvk2pfx (pvk2pfx.exe) aus einer CER- und einer PVK-Datei eine PFX-Datei (Personal Information Exchange) erstellt. Die PFX-Datei enthält den öffentlichen und den privaten Schlüssel.
Die in Schritt 1 erstellte Datei testcert.cer kann über das Steuerfeld in Google Workspace hochgeladen werden. Mit der Datei testcert.pfx aus Schritt 2 kann eine Instanz X509Certificate2 (.NET 2.0+) zur Signatur der SAML-Antwort erstellt werden.
Keytool in Java verwenden
Java-Entwickler können das keytool-Dienstprogramm im Standard-JDK verwenden, um das öffentlich/private Schlüsselpaar und das X.509-Zertifikat zu erstellen. keytool ist ein Dienstprogramm zur Schlüssel- und Zertifikatsverwaltung, mit dem Nutzer ihre eigenen Paare aus öffentlichen/privaten Schlüsseln und die zugehörigen Zertifikate für die Verwendung in Authentifizierungsschemas verwalten können, die digitale Signaturen erfordern. keytool speichert Schlüssel und Zertifikate in einem „Keystore“, der in der Standardimplementierung einfach eine Datei (.keystore) im Basisverzeichnis des Nutzers ist. Private Schlüssel sind passwortgeschützt.
DSA-Schlüsselpaare erstellen
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"keytool -export -alias dsassokey -file dsasso.cer
In Schritt 1 wird mithilfe des DSA-Algorithmus ein 2.048-Bit-Schlüsselpaar mit einem öffentlichen und einem privaten Schlüssel erstellt, das 180 Tage gültig ist.
In Schritt 2 wird aus dem öffentlichen Schlüssel ein X.509-Zertifikat (dsasso.cer) erstellt. Anschließend laden Sie dsasso.cer über das Steuerfeld in Google Workspace hoch.
RSA-Schlüsselpaare erstellen
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180keytool -export -alias rsassokey -file rsasso.cer
In Schritt 1 wird mithilfe des RSA-Algorithmus ein 2.048-Bit-Schlüsselpaar mit einem öffentlichen und einem privaten Schlüssel erstellt, das 180 Tage gültig ist.
In Schritt 2 wird aus dem öffentlichen Schlüssel ein X.509-Zertifikat (rsasso.cer) erstellt. Laden Sie dann rsasso.cer über das Steuerfeld in Google Workspace hoch.
Java Cryptography Architecture verwenden
Die Java Cryptography Architecture (JCA) bietet wichtige Klassen und Schnittstellen zum Generieren und Bearbeiten von Sicherheitseigenschaften. Die JCA umfasst die Teile der Java 2 SDK Security API, die sich auf die Kryptografie beziehen. Mit dieser API können Sie ganz einfach im gewünschten Algorithmus Schlüsselpaare aus öffentlichen und privaten Schlüsseln erstellen. Mit dem folgenden Beispielcode werden DSA- oder RSA-Schlüssel erstellt, die für die Einmalanmeldung in Google Workspace verwendet werden können.
Schlüsselpaar aus öffentlichem und privatem Schlüssel erstellen
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();
}
}
}
In diesem Code wird mithilfe von KeyPairGenerator ein DSA-Schlüsselpaar erstellt. Die Schlüssel im Binärformat werden in separate Dateien ausgegeben.
Anschließend können Sie den öffentlichen Schlüssel in Google Workspace registrieren und Ihre SAMLResponse mit dem privaten Schlüssel signieren. Wenn Sie statt DSA-Schlüsseln ein RSA-Schlüsselpaar generieren möchten, ersetzen Sie einfach im Code "DSA" durch "RSA".
Zertifikat oder öffentlichen Schlüssel in Google Workspace registrieren
Den etwas komplizierteren Teil haben Sie jetzt hinter sich! Der nächste Schritt ist einfach. Um das Zertifikat oder den öffentlichen Schlüssel bei Google Workspace zu registrieren, gehen Sie zur Admin-Konsole und melden Sie sich als Administrator an. Wählen Sie Sicherheit und dann Einmalanmeldung (SSO) einrichten aus und füllen Sie alle Felder auf der Seite unter Einmalanmeldung (SSO) mit externem Identitätsanbieter einrichten aus.