Google Workspace oferuje usługę logowania jednokrotnego (SSO) klientom korzystającym z Google Workspace lub Google Workspace for Education. Usługa Logowanie jednokrotne w Google Workspace akceptuje klucze publiczne i certyfikaty wygenerowane przy użyciu algorytmu RSA lub DSA. Aby korzystać z usługi, musisz wygenerować zestaw kluczy publicznych i prywatnych oraz certyfikat X.509 zawierający klucz publiczny. Gdy uzyskasz klucz publiczny lub certyfikat, musisz zarejestrować go w Google. Możesz to zrobić, przesyłając klucz lub certyfikat w konsoli administracyjnej Google.
Sposób generowania kluczy i certyfikatów zależy często od platformy programistycznej i preferowanego języka programowania. Klucze i certyfikat wymagane przez usługę SSO Google Workspace możesz wygenerować na kilka sposobów.
OpenSSL
Istnieje wiele metod tworzenia par kluczy publicznych i prywatnych, ale jednym z najpopularniejszych jest narzędzie open source OpenSSL. Został on przeniesiony na wszystkie główne platformy i zapewnia prosty interfejs wiersza poleceń do generowania kluczy.
Tworzenie klucza prywatnego RSA
Aby wygenerować klucz prywatny RSA za pomocą narzędzia OpenSSL, musisz wykonać tylko jedno polecenie:
openssl genrsa -out rsaprivkey.pem 2048
To polecenie generuje klucz prywatny zakodowany w formacie PEM i zapisuje go w pliku rsaprivkey.pem. W tym przykładzie tworzony jest klucz 2048-bitowy, który powinien być odpowiedni do niemal każdego zastosowania. Wynikowy klucz prywatny powinien być utrzymywany w tajemnicy i służy do podpisywania i odszyfrowywania danych.
Niektóre implementacje, zwłaszcza oparte na Javie, mogą wymagać formatu DER lub PKCS8, który można na przykład wygenerować, wykonując te dodatkowe czynności:
openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
Pierwsze polecenie pozwala wygenerować klucz publiczny w formacie DER.
W kroku 2 generowany jest klucz prywatny w formacie pkcs8 i DER. Po wygenerowaniu możesz używać tych kluczy (rsapubkey.der i rsaprivkey.der).
Tworzenie klucza prywatnego DSA
Aby wygenerować klucz DSA, musisz wykonać 2 polecenia:
openssl dsaparam -out dsaparam.pem 2048openssl gendsa -out dsaprivkey.pem dsaparam.pem
Pierwszy krok polega na utworzeniu pliku parametrów DSA, dsaparam.pem, który w tym przypadku
instruuje OpenSSL, aby w kroku 2 utworzyć 2048-bitowy klucz. Plik dsaparam.pem nie jest kluczem i można go usunąć po utworzeniu kluczy publicznego i prywatnego. Drugi etap tworzy klucz prywatny w pliku dsaprivkey.pem, który należy zachować w tajemnicy.
Aby wyeksportować klucz do formatu DER (binarnego), możesz wykonać następujące polecenia:
openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
Pierwsze polecenie pozwala wyodrębnić klucz publiczny do formatu DER.
W kroku 2 klucz prywatny jest konwertowany na format pkcs8 i DER. Gdy to zrobisz, możesz użyć tej pary kluczy publicznego (dsapubkey.der) i prywatnego (dsaprivkey.der).
Tworzenie certyfikatu
Gdy masz już parę kluczy, możesz łatwo utworzyć certyfikat X.509. Certyfikat zawiera odpowiedni klucz publiczny oraz metadane dotyczące organizacji, która go utworzyła. Aby utworzyć podpisany samodzielnie certyfikat z klucza prywatnego RSA lub DSA:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
Po udzieleniu odpowiedzi na kilka pytań certyfikat zostanie utworzony i zapisany jako dsacert.pem. Ten plik przesyłasz do Google Workspace za pomocą panelu sterowania podczas konfigurowania logowania jednokrotnego.
Tworzenie odcisku cyfrowego certyfikatu
Niektóre aplikacje wymagają odcisku cyfrowego certyfikatu X.509, a nie samego certyfikatu X.509. Odcisk cyfrowy to skrót certyfikatu w formacie binarnym x509. Rodzaj odcisku cyfrowego zależy od algorytmu użytego do jego wygenerowania, np. SHA-1 lub SHA-256.
Aby utworzyć odcisk cyfrowy SHA-256 z certyfikatu X.509, użyj tego polecenia (zastępując nazwę pliku .pem rzeczywistym certyfikatem):
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
Microsoft Visual Studio dla .NET
Microsoft Visual Studio 2005 udostępnia narzędzia (w katalogu Common7ToolsBin), których można użyć do wygenerowania certyfikatu do użytku z Google Workspace. Aby utworzyć parę kluczy publicznego i prywatnego oraz certyfikat w .NET, wykonaj te czynności:
makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cerpvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
Domyślnie w powyższych poleceniach używany jest algorytm RSA. W kroku 1 używane jest narzędzie Certificate Creation (makecert.exe) do utworzenia podpisanego samodzielnie certyfikatu X.509 o nazwie testcert.cer i odpowiedniego klucza prywatnego.
W kroku 2 używane jest narzędzie pvk2pfx (pvk2pfx.exe) do utworzenia pliku PFX (Personal Information Exchange) z plików CER i PVK. Plik PFX zawiera zarówno klucz publiczny, jak i prywatny.
Plik testcert.cer utworzony w kroku 1 można przesłać do Google Workspace za pomocą panelu sterowania, a testcert.pfx z kroku 2 można użyć do utworzenia instancji X509Certificate2 (.NET 2.0+) do podpisywania odpowiedzi SAML.
Keytool w języku Java
Deweloperzy Java mogą użyć narzędzia keytool znajdującego się w standardowym zestawie JDK, aby utworzyć parę kluczy publiczny/prywatny i certyfikat X.509. keytool to narzędzie do zarządzania kluczami i certyfikatami, które umożliwia użytkownikom administrowanie własnymi parami kluczy publiczny/prywatny i powiązanymi z nimi certyfikatami do użycia w schematach uwierzytelniania wymagających podpisów cyfrowych. keytool przechowuje klucze i certyfikaty w „magazynie kluczy”, który w przypadku domyślnej implementacji jest po prostu plikiem (.keystore) w katalogu domowym użytkownika. Klucze prywatne są chronione hasłami.
Tworzenie par kluczy DSA
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"keytool -export -alias dsassokey -file dsasso.cer
Krok 1 generuje parę kluczy publiczny/prywatny o rozmiarze 2048 bitów i ważności 180 dni przy użyciu algorytmu DSA.
W kroku 2 z klucza publicznego generowany jest certyfikat X.509 (dsasso.cer). Następnie przesyłasz dsasso.cer do Google Workspace za pomocą panelu sterowania.
Tworzenie par kluczy RSA
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180keytool -export -alias rsassokey -file rsasso.cer
Krok 1 generuje parę kluczy publiczny/prywatny o rozmiarze 2048 bitów i ważności 180 dni przy użyciu algorytmu RSA.
W kroku 2 z klucza publicznego generowany jest certyfikat X.509 (rsasso.cer). Następnie prześlij
rsasso.cer do Google Workspace za pomocą panelu sterowania.
Java Cryptography Architecture
Java Cryptography Architecture (JCA) udostępnia podstawowe klasy i interfejsy do generowania właściwości zabezpieczeń i manipulowania nimi. JCA obejmuje części interfejsu Java 2 SDK Security API związane z kryptografią. Za pomocą tego interfejsu API możesz łatwo generować pary kluczy publicznych i prywatnych w wybranym algorytmie. Poniżej znajdziesz przykładowy kod, który tworzy klucze DSA lub RSA do użycia z usługą logowania jednokrotnego Google Workspace.
Tworzenie pary kluczy (publicznego i prywatnego)
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();
}
}
}
Powyższy kod używa funkcji KeyPairGenerator do utworzenia pary kluczy DSA. Wygenerowane klucze będą w formacie binarnym i zostaną zapisane w osobnych plikach.
Gdy będziesz mieć klucze, możesz zarejestrować klucz publiczny w Google Workspace i użyć klucza prywatnego do podpisania żądania SAMLResponse. Aby wygenerować parę kluczy RSA zamiast DSA, wystarczy zastąpić w kodzie "DSA" ciągiem "RSA".
Rejestrowanie certyfikatu lub klucza publicznego w Google Workspace
Po wykonaniu trudnej części, czyli wygenerowaniu kluczy i certyfikatów, następny krok jest bardzo prosty. Aby zarejestrować certyfikat lub klucz publiczny w Google Workspace, musisz przejść do konsoli administracyjnej i zalogować się jako administrator. Wybierz Zabezpieczenia, a następnie Konfigurowanie logowania jednokrotnego (SSO) i wypełnij wszystkie pola na stronie w sekcji Skonfiguruj logowanie jednokrotne przy użyciu zewnętrznego dostawcy tożsamości.