Wie kann man Windows-Zertifikatsspeicher-Verwendung einstellen - Beispiel Gateway-NG (Stichworte: SSL/HTTPS, Windows-Root-Zertifikat)?

Wie kann man Windows-Zertifikatsspeicher-Verwendung einstellen - Beispiel Gateway-NG (Stichworte: SSL/HTTPS, Windows-Root-Zertifikat)?

Eine umfassende Beschreibung (Beschreibung für alles, also alle Kerndienste und Services) findet man hier: Ende-zu-Ende-Verschlüsselung (TLS/SSL)

Nachfolgend ein Beispiel für Gateway-NG auf SSL stellen und Windows-Zertifikatsspeicher verwenden. 

Schritt-für-Schritt-Anleitung

  1. Zertifikat erstellen lassen. Es muss enthalten: SAN (= SubjectAlternativeName), einen Alias-Namen und CN (Domain).   

  2. Das Zertifikat püfen. Dazu aus einem beliebigen Java-BIN-Verzeichnis das Tool keytool.exe verwenden, siehe auch Wie richtet man beim Gateway SSL/HTTPS ein?
    1. Empfehlung: eine BAT-Datei erstellen in einem beliebigen Verzeichnis mit diesem Inhalt:
      <pfad zum gateway>\jdk\bin\keytool.exe -v -list -keystore <pfad zum Zertifikat>\<zertifikatsdatei> > <pfad zum log>\<Info-Datei, z. Bsp. zertinfo.txt> 
      Beispiel:
      C:\enaio\services\gateway\jdk\bin\keytool.exe -v -list -keystore "C:\enaio\services\Gateway\apps\os_gateway\config\gw_keystore.pkcs" > C:\temp\zertinfo.txt
      Alternative: per CMD die Befehlszeile eingeben. 
    2. Die BAT mit "als Administrator ausführen" ausführen. 
    3. Nun kommt eine Passworteingabe. Das Zertifikats-Passwort eingeben. 
    4. Danach die erstellte Datei mit einem Editor öffnen und prüfen. 

  3. Ist das Zertifikat in Ordnung, eine Text-Datei erstellen namens application-ssl.yml und in das Servicemanager\config-Verzeichnis kopieren.
    Sofern es bereits eine im Servicemanager\config-Verzeichnis gibt, diese bearbeiten.
    Inhalt der Datei - die orange markierten Stellen an das Kundensystem und die Zertifikatsinfos anpassen:

    server.ssl:
      enabled: true
      key-store: 'D:/_Install/Zertifikate/meinzertifikat.p12'
      key-store-type: PKCS12
      key-store-password: 'optimal'
      key-alias: 'ssl-zertifikat'
      key-password: 'optimal'
    eureka.instance:
      hostname: 'meinserver.domain.de'
      non-secure-port-enabled: false
      secure-port-enabled: true
      secure-port: "${server.port}"
      prefer-ip-address: false
      homePageUrl: "https://${eureka.instance.hostname}:${eureka.instance.secure-port}/"
      healthCheckUrl: "https://${eureka.instance.hostname}:${eureka.instance.secure-port}/manage/health"
      statusPageUrl: "https://${eureka.instance.hostname}:${eureka.instance.secure-port}/manage/info"
      secureHealthCheckUrl: "https://${eureka.instance.hostname}:${eureka.instance.secure-port}/manage/health"

  4. Die Datei servicewatcher-sw.yml im Servicemanager\config-Verzeichnis sichern in einem anderen Verzeichnis. Dann die Datei im Servicemanager\config-Verzeichnis anpassen.
    1. Erweiterung:
      globalOptions:
        - -Djavax.net.ssl.trustStoreType=WINDOWS-ROOT
        - -Djavax.net.ssl.trustStore=NONE
    2. Anpassung:
      Den Gateway-NG-Eintrag suchen und Profile ergänzen um "ssl":
      - name: gatewayngservice
        type: microservice
        profiles: prod,cloud,ssl
        instances: 1
        memory: 512M
        port: 4040
        path: ${appBase}/gatewayngservice/gatewayngservice-app.jar

  5. Das konfigurierte Zertifikat in den Windows-Zertifikatsspeicher importieren. Wichtig: Es muss unter "lokaler Computer - Vertrauenswürdige Herausgeber" (englisch: "trusted publisher") importiert werden. 
    Kontrolle: Im Windows nach "Computer-Zertifikate verwalten" suchen und auf vertrauenswürdige Herausgeber gehen. Hier muss das importierte Zertifikat zu finden sein (mit Doppelklick kann man es öffnen und prüfen):


  6. Nun noch bei Tab-Java des Servicemanager die Verwendung Windows-Zertifikatsspeicher stellen, ansonsten wird das Zertifikat nicht als vertrauenswürdig eingestuft.
    Dazu die Servicemanagerw.exe starten (BIN-Verzeichnis). Empfehlung: Diese Parameter auch  beim Gateway und Appconnector einstellen. 

    Diese Parameter eintragen:

    -Djavax.net.ssl.trustStoreType=WINDOWS-ROOT

    -Djavax.net.ssl.trustStore=NONE



  7. Servicemanager beenden und alle Protokolle entfernen. 

  8. Den Servicemanager starten und im services.log prüfen, ob alle Komponenten starten. 



Beim Austausch des Zertifikates muss das neue Zertifikat nur noch in der application-ssl.yml geändert und in den Windows-Zertifikatsspeicher importiert werden. 

Bei Updates (enaio Versionswechsel) bitte prüfen, ob die Parameter bei der Servicemanager-W-Exe (Punkt 6) noch vorhanden sind. Versionsfixe überschreiben diesen Parameter nicht. 

Verwandte Artikel