Schlüsselpaar für WS-Security erstellen

Verwendung

  • Absichern eines Web-Service-Providers ohne Security Token Service.

  • Authentifizierung eines Clients bei einem Web-Service-Provider ohne Security Token Service

    Die Authentifizierung erfolgt einmal pro Session über ein selbst oder extern signiertes Schlüsselpaar direkt am Webservice.

Selbstsigniertes Schlüsselpaar erstellen

So gehen Sie vor

  1. Generieren Sie ein Schlüsselpaar mit der Erweiterung SubjectKeyIdentifier.

    Setzen Sie dazu die Optionen gemäß Ihren Anforderungen:

    openssl req -x509 -days 365 -nodes -newkey rsa:2048 -subj "/C=myCountry/ST=myState/L=myCity/O=myOrganization/OU=myDepartment/CN=myServerName" ‑keyout selfsigned.key -out selfsigned.crt -extensions v3_ca
  2. Konvertieren Sie das im Schritt 1 generierte Schlüsselpaar in das PKCS12-Format, um es in den Java-Keystore importieren zu können. Dabei müssen Sie ein Passwort vergeben.

    openssl pkcs12 -export -in selfsigned.crt `‑`inkey selfsigned.key `‑`out selfsigned.p12
  3. Importieren Sie die PKCS12-Datei in den Java-Keystore.

    keytool -importkeystore -srckeystore selfsigned.p12 -srcstoretype pkcs12 ‑srcalias 1 -srcstorepass INUBIT -destkeystore selfsigned.keystore.jks ‑destalias tomcat -deststorepass <yourPassword>
  4. Generieren Sie einen JKS-Truststore mit dem Service-Zertifikat. Als Passwort geben Sie das im Schritt 2 vergebene Passwort an.

    keytool -importcert -keystore selfsigned.truststore.jks -file selfsigned.crt -alias tomcat -storepass <yourPassword>

Extern signiertes Schlüsselpaar erstellen

So gehen Sie vor

  1. Generieren Sie einen Keystore mit einem automatisch generierten Zertifikat.

    Setzen Sie dazu die Optionen gemäß Ihren Anforderungen:

    keytool -genkey -keyalg RSA -dname "CN=myServerName, O=myCompany IS, C=de" -validity 999 -keystore private.keystore -keypass <yourPassword> ‑storepass <yourPassword> -alias tomcat
  2. Exportieren Sie die Zertifizierungsanforderung anhand des privaten Schlüssels.

    keytool -certreq -v -alias tomcat -keystore private.keystore -storepass <yourPassword> -file server_request.csr
  3. Übermitteln Sie die Zertifizierungsanforderung an eine von ihnen gewählte Zertifizierungsstelle (Certificate Authority/ CA), wie z.B. D‑Trust. Die Zertifizierungsstelle sendet ihnen ein signiertes Zertifikat für den Web-Service (hier CAcert.cer) und ihren eigenen öffentliches Schlüssel (hier public.cer) zurück.

  4. Listen Sie alle Informationen des Service-Zertifikats auf. Es müssen 509v3 und SubjectKeyIdentifier angezeigt werden.

    keytool -printcert -v -file public.cer
  5. Importieren Sie das CA-Zertifikat in den privaten Keystore.

    keytool -import -trustcacerts -alias cacert -file CAcert.crt -keystore private.keystore -storepass <yourPassword>
  6. Importieren Sie den öffentlichen Schlüssel in den privaten Keystore.

    keytool -import -trustcacerts -alias tomcat -file public.cer ‑keystore private.keystore -storepass <yourPassword>
  7. Generieren Sie den Truststore mit dem öffentlichen Schlüssel.

    keytool -import -alias tomcat -file public.cer -keystore public.keystore ‑storepass <yourPassword>
  8. Importieren Sie das CA-Zertifikat in den Truststore zur Überprüfung der Zertifikatskette (certificate chain check).

    keytool -import -alias cacert -file CAcert.crt -keystore public.keystore ‑storepass <yourPassword>