Im folgenden Schritt wird erläutert, wie Sie eine Sicherheitsschicht für die Kommunikation zwischen den Endpunkten Ihrer Umgebung aktivieren.
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.
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.
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.
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
Die Befehle sind dieselben wie im Abschnitt Lernprogramm zur Java-SE-Sicherheit - Schritt 3.
startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -JMXServicePort 11001
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
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:
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"
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"
Führen Sie den folgenden Befehl für die Clientauthentifizierung aus:
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.
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
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:
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"
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.