Lernprogramm zur Java-SE-Sicherheit - Schritt 6

Im folgenden Schritt wird erläutert, wie Sie eine Sicherheitsschicht für die Kommunikation zwischen den Endpunkten Ihrer Umgebung aktivieren.

Vorbereitende Schritte

Stellen Sie sicher, dass Sie die Anweisungen im Abschnitt Lernprogramm zur Java-SE-Sicherheit - Schritt 5 ausgeführt haben, bevor Sie mit dieser Task fortfahren.

Informationen zu diesem Vorgang

Die eXtreme-Scale-Topologie unterstützt Transport Layer Security/Secure Sockets Layer (TLS/SSL) für die sichere Kommunikation zwischen ObjectGrid-Endpunkten (Client, Container-Server und Katalogserver). Dieser Schritt des Lernprogramms zum Aktivieren der Transportsicherheit baut auf den vorherigen Schritten auf.

Vorgehensweise

  1. Erstellen Sie TLS/SSL-Schlüssel und Keystores.
    Zum Akivieren der Transportsicherheit müssen Sie einen Keystore und einen Truststore erstellen. In dieser Übung wird nur ein einziges Keystore/Truststore-Paar erstellt. Diese Speicher werden für ObjectGrid-Clients, Container-Server und Katalogserver verwendet und mit keytool von JDK erstellt.
    • Privaten Schlüssel im Keystore erstellen

      keytool -genkey -alias ogsample -keystore key.jks -storetype JKS -keyalg rsa -dname "CN=ogsample, OU=OGSample, O=acme, L=Your City, S=Your State, C=Your Country" -storepass ogpass -keypass ogpass -validity 3650

      Mit diesem Befehl wird ein Keystore "key.jks" erstellt, in dem ein Schlüssel "ogsample" gespeichert ist. Dieser Keystore "key.jks" wird als SSL-Keystore verwendet.

    • Öffentliches Zertifikat exportieren

      keytool -export -alias ogsample -keystore key.jks -file temp.key -storepass ogpass

      Mit diesem Befehl wird das öffentliche Zertifikat des Schlüssels "ogsample" extrahiert und in der Datei "temp.key" gespeichert.

    • Öffentliches Zertifikat des Clients in den Truststore importieren

      keytool -import -noprompt -alias ogsamplepublic -keystore trust.jks -file temp.key -storepass ogpass

      Mit diesem Befehl wird das öffentliche Zertifikat dem Keystore "trust.jks" hinzugefügt. Dieser Keystore "trust.jks" wird als SSL-Truststore verwendet.

  2. ObjectGrid-Eigenschaftendateien konfigurieren

    In diesem Schritt müssen Sie die ObjectGrid-Eigenschaftendateien für die Aktivierung der Transportsicherheit konfigurieren.

    Kopieren Sie zuerst die Dateien "key.jks" und "trust.jks" in das Verzeichnis "Objectgrid-Stammverzeichnis/security".

    Definieren Sie die folgenden Eigenschaften in den Dateien client.properties und server.properties.

    transportType=SSL-Required
    
    alias=ogsample
    contextProvider=IBMJSSE2
    protocol=SSL
    keyStoreType=JKS
    keyStore=../security/key.jks
    keyStorePassword=ogpass
    trustStoreType=JKS
    trustStore=../security/trust.jks
    trustStorePassword=ogpass

    transportType: Die Eigenschaft "transportType" wird auf "SSL-Required" gesetzt, d. h., für den Transport ist SSL erforderlich. Deshalb muss für alle ObjectGrid-Endpunkte (Clients, Katalogserver und Container-Server) SSL konfiguriert werden, und die gesamte Transportkommunikation wird verschlüsselt.

    Die anderen Eigenschaften werden zum Definieren der SSL-Konfigurationen verwendet. Eine ausführlicher Erläuterung finden Sie unter Transport Layer Security und Secure Sockets Layer. Stellen Sie sicher, dass Sie die Anweisungen in diesem Abschnitt befolgen, um Ihre Datei orb.properties zu aktualisieren.

    Stellen Sie sicher, dass Sie den folgenden Anweisungen folgen, um Ihre Datei orb.properties zu aktualisieren.

    In der Datei server.properties müssen Sie eine zusätzliche Eigenschaft "clientAuthentication" hinzufügen und diese auf "false" setzen. Auf der Serverseite müssen Sie den Client nicht anerkennen.

    clientAuthentication=false

  3. Anwendung ausführen

    Die Befehle sind dieselben wie im Abschnitt Lernprogramm zur Java-SE-Sicherheit - Schritt 3.

    Verwenden Sie die folgenden Befehle, um einen Katalogserver zu starten:
    1. Navigieren Sie wie folgt zum Verzeichnis "bin": cd ObjectGrid-Stammverzeichnis/bin
    2. Starten Sie den Katalogserver:
      • [Linux][Unix]
        startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml 
        -serverProps ../security/server.properties -JMXServicePort 11001 
        -jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
      • [Windows]
        startOgServer.bat catalogServer -clusterSecurityFile ../security/security.xml 
        -serverProps ../security/server.properties -JMXServicePort 11001 -jvmArgs 
        -Djava.security.auth.login.config="../security/og_jaas.config"

      Die Dateien security.xml und server.properties wurden im Abschnitt Lernprogramm zur Java-SE-Sicherheit - Schritt 2 erstellt.

      Verwenden Sie die Option -JMXServicePort, um den JMX-Port für den Server explizit anzugeben. Diese Option ist für die Verwendung des Dienstprogramms xscmd erforderlich.

      Führen Sie einen sicheren ObjectGrid-Container-Server aus:

    3. Navigieren Sie erneut zum Verzeichnis "bin": cd ObjectGrid-Stammverzeichnis/bin
      • [Linux][Unix]
        startOgServer.sh c0 -objectGridFile ../xml/SecureSimpleApp.xml 
        -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints 
        localhost:2809 -serverProps ../security/server.properties 
        -JMXServicePort 11002 -jvmArgs 
        -Djava.security.auth.login.config="../security/og_jaas.config" 
        -Djava.security.auth.policy="../security/og_auth.policy"
      • [Windows]
        startOgServer.bat c0 -objectGridFile ../xml/SecureSimpleApp.xml 
        -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809 
        -serverProps ../security/server.properties -JMXServicePort 11002 
        -jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config" 
        -Djava.security.auth.policy="../security/og_auth.policy"
    Beachten Sie die folgenden Unterschiede zum vorherigen Startbefehl für den Katalogserver:
    • Verwenden Sie die Datei SecureSimpleApp.xml anstelle der Datei SimpleApp.xml.
    • Es wird eine weitere Eigenschaft "-Djava.security.auth.policy" hinzugefügt, um die JAAS-Berechtigungsrichtliniendatei für den Container-Serverprozess zu definieren.

    Führen Sie den folgenden Befehl für die Clientauthentifizierung aus:

    1. cd ObjectGrid-Stammverzeichnis/bin
    2. javaHome/java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar 
      com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp 
      ../security/client.properties manager manager1

      Da der Benutzer "manager" die Berechtigung für alle Maps im ObjectGrid "accounting" hat, wird die Anwendung erfolgreich ausgeführt.

    Sie können das Dienstprogramm xscmd verwenden, um die Map-Größen des Grids "accounting" anzuzeigen.
    • Navigieren Sie zum Verzeichnis ObjectGrid-Stammverzeichnis/bin.
    • Verwenden Sie den Befehl xscmd, um die Map-Größen anzuzeigen:
      • [Unix][Linux]
        xscmd.sh -c showMapsizes -g accounting -m customer -prot SSL 
        -ts .\security\trust.jks -tsp ogpass -tst jks 
        -user manager -pwd manager1 -ks ..\security\key.jks -ksp ogpass -kst JKS 
        -cxpv IBMJSSE2 -tt SSL-Required
      • [Windows]
        xscmd.bat -c showMapsizes -g accounting -m customer -prot SSL 
        -ts ..\security\trust.jks -tsp ogpass -tst jks 
        -user manager -pwd manager1 -ks ..\security\key.jks -ksp ogpass -kst JKS 
        -cxpv IBMJSSE2 -tt SSL-Required

      Hier geben Sie den JMX-Port des Katalogservice mit "-p 11001" an.

      Sie sehen die folgende Ausgabe.

      This administrative utility is provided as a sample only and is not to 
      be considered a fully supported component of the WebSphere eXtreme Scale product.
      Connecting to Catalog service at localhost:1099
      *********** Displaying Results for Grid - accounting, MapSet - customer ***********
      *** Listing Maps for c0 ***
      Map Name: customer Partition #: 0 Map Size: 1 Shard Type: Primary
      Server Total: 1
      Total Domain Count: 1

    Anwendung mit einem ungültigen Keystore ausführen

    Wenn Ihr Truststore das öffentliche Zertifikat zum privaten Schlüssel im Keystore nicht enthält, wird eine Ausnahme angezeigt, in der erläutert wird, dass der Schlüssel nicht anerkannt werden kann.

    Zur Demonstration erstellen Sie einen weiteren Keystore mit dem Namen "key2.jks".

    keytool -genkey -alias ogsample -keystore key2.jks -storetype JKS -keyalg rsa -dname "CN=ogsample, OU=Your Organizational Unit, O=Your Organization, L=Your City, S=Your State, C=Your Country" -storepass ogpass -keypass ogpass -validity 3650

    Ändern Sie anschließend die Datei "server.properties" so, dass "keyStore" auf diesen neuen Keystore "key2.jks" zeigt:

    keyStore=../security/key2.jks

    Führen Sie den folgenden Befehl aus, um den Katalogserver zu starten:

    1. Navigieren Sie wie folgt zum Verzeichnis "bin": cd ObjectGrid-Stammverzeichnis/bin
    2. Starten Sie den Katalogserver:
      [Linux][Unix]
      startOgServer.sh c0 -objectGridFile ../xml/SecureSimpleApp.xml 
      -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809 
      -serverProps ../security/server.properties -jvmArgs 
      -Djava.security.auth.login.config="../security/og_jaas.config" 
      -Djava.security.auth.policy="../security/og_auth.policy"
      [Windows]
      startOgServer.bat c0 -objectGridFile ../xml/SecureSimpleApp.xml 
      -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809
       -serverProps ../security/server.properties -jvmArgs 
      -Djava.security.auth.login.config="../security/og_jaas.config" 
      -Djava.security.auth.policy="../security/og_auth.policy"

      Sie sehen die folgende Ausgabe:

      Caused by: com.ibm.websphere.objectgrid.ObjectGridRPCException:
          com.ibm.websphere.objectgrid.ObjectGridRuntimeException:
              SSL connection fails and plain socket cannot be used.

      Ändern Sie abschließend die Datei server.properties wieder so zurück, dass sie die Datei key.jks verwendet.