Java Runtime Environment für die Verwendung von SSL konfigurieren
Bevor Sie SSL-Verbindungen (Secure Sockets Layer) in Ihren JDBC-und SQLJ-Anwendungen verwenden können, müssen Sie die Java™ Runtime Environment für die Verwendung von SSL konfigurieren. Es wird eine Beispielprozedur bereitgestellt. Je nach der von Ihnen zu verwendenden Java-Laufzeitumgebung kann die Prozedur jedoch unterschiedlich sein.
Vorbereitende Schritte
- Die Java Runtime Environment muss einen Java-Sicherheitsprovider enthalten. Der IBM® JSSE-Provider oder der SunJSSE-Provider muss installiert sein. Der IBM JSSE-Provider wird automatisch mit dem IBM-SDK für Java installiert.Einschränkung: Sie können den SunJSSE-Provider nur mit einer Oracle Java Runtime Environment verwenden. Der SunJSSE-Provider funktioniert nicht mit einer IBM Java Runtime Environment.
- Die SSL-Unterstützung muss auf dem Datenbankserver konfiguriert sein.
Vorgehensweise
Führen Sie die folgenden Schritte aus, um Ihre Java Runtime Environment für die Verwendung von SSL zu konfigurieren:
- Importieren Sie ein Zertifikat aus dem Datenbankserver in einen Java-Truststore auf dem Client.
Verwenden Sie das Dienstprogramm Java keytool , um das Zertifikat in den Truststore zu importieren.
Beispiel: Nehmen Sie an, dass das Serverzertifikat in einer Datei mit dem Namen cacerts gespeichert ist. Setzen Sie die folgende keytool -Dienstprogrammanweisung ab, um das Zertifikat aus der Datei jcc.cacert zu lesen, und speichern Sie sie in einem Truststore mit dem Namen cacerts.Beispiel: Nehmen Sie an, dass das Serverzertifikat in einer Datei mit dem Namen mydbserver.arm gespeichert ist. Setzen Sie die folgende keytool -Dienstprogrammanweisung ab, um das Zertifikat aus der Datei mydbserver.arm zu lesen, und speichern Sie sie in einem Truststore mit dem Namen mynewdbclient.jks.keytool -import -file jcc.cacert -keystore cacertskeytool -import -trustcacerts -alias myalias -file mydbserver.arm -keystore mynewdbclient.jks - Konfigurieren Sie die Java Runtime Environment für die Java-Sicherheitsprovider, indem Sie Einträge zur Datei java.security hinzufügen.
Das Format eines Sicherheitsprovidereintrags lautet wie folgt:
security.provider.n=name_des_providerpaketsEin Provider mit einem niedrigeren Wert von n hat Vorrang vor einem Provider mit einem höheren Wert von n.
Die von Ihnen hinzuzufügenden Java-Sicherheitsprovidereinträge hängen davon ab, ob Sie den IBM JSSE-Provider oder den SunJSSE-Provider verwenden.
- Wenn Sie den SunJSSE-Provider verwenden, fügen Sie Einträge für die Oracle-Sicherheitsprovider in Ihre java.security-Datei ein.
- Wenn Sie den IBM-JSSE-Provider verwenden, verwenden Sie eine der folgenden Methoden:
- Verwenden Sie den Provider IBMJSSE2 (wird für das IBM SDK für Java 1.4.2 und höher unterstützt): Empfehlung: Verwenden Sie den Provider IBMJSSE2, und verwenden Sie ihn im FIPS-Modus.
- Gehen Sie wie folgt vor, wenn Sie nicht im FIPS-konformen Modus arbeiten müssen:
- Fügen Sie für das IBM SDK für Java 1.4.2 einen Eintrag für den IBMJSSE2Provider zur Datei java.security hinzu. Stellen Sie sicher, dass sich ein Eintrag für den IBMJCE -Provider in der Datei java.security befindet. Die java.security-Datei, die mit dem IBM SDK für Java geliefert wird, enthält einen Eintrag für Einträge für IBMJCE .
- Stellen Sie für spätere Versionen von IBM SDK für Java sicher, dass die Einträge für IBMJSSE2Provider und IBMJCE in der Datei java.security enthalten sind. Die java.security-Datei, die mit dem IBM SDK für Java geliefert wird, enthält Einträge für diese Provider.
- Gehen Sie wie folgt vor, wenn Sie im FIPS-konformen Modus arbeiten müssen:
- Fügen Sie einen Eintrag für den Provider IBMJCEFIPS in Ihre java.security-Datei vor dem Eintrag für den IBMJCE -Provider hinzu. Entfernen Sie den Eintrag für den IBMJCE -Provider nicht.
- Aktivieren Sie den FIPS-Modus im IBMJSSE2 -Provider. Siehe Schritt 3.
- Gehen Sie wie folgt vor, wenn Sie nicht im FIPS-konformen Modus arbeiten müssen:
- Verwenden Sie den Provider IBMJSSE (wird nur für das IBM SDK für Java 1.4.2 unterstützt):
- Wenn Sie nicht im FIPS-konformen Modus arbeiten müssen, stellen Sie sicher, dass die Einträge für den IBMJSSEProvider und den IBMJCE -Provider in der Datei java.security enthalten sind. Die java.security-Datei, die mit dem IBM SDK für Java geliefert wird, enthält Einträge für diese Provider.
- Wenn Sie im FIPS-konformen Modus arbeiten müssen, fügen Sie Einträge für den FIPS-genehmigten Provider IBMJSSEFIPSProvider und den Provider IBMJCEFIPS in Ihre java.security-Datei vor dem Eintrag für den IBMJCE -Provider hinzu.
Einschränkung: Wenn Sie den Provider IBMJSSE auf dem Betriebssystem Solaris verwenden, müssen Sie einen Eintrag für den SunJSSE-Provider vor den Einträgen für die Provider IBMJCE , IBMJCEFIPS , IBMJSSE oder IBMJSSE2 angeben. - Verwenden Sie den Provider IBMJSSE2 (wird für das IBM SDK für Java 1.4.2 und höher unterstützt):
Beispiel: Wenn Sie im FIPS-konformen Modus ausgeführt werden müssen und Sie den FIPS-Modus im IBMJSSE2-Provider aktiviert haben, verwenden Sie eine java.security-Datei, die dem folgenden Beispiel ähnelt:
# Set the Java security providers security.provider.1=com.ibm.jsse2.IBMJSSEProvider2 security.provider.2=com.ibm.crypto.fips.provider.IBMJCEFIPS security.provider.3=com.ibm.crypto.provider.IBMJCE security.provider.4=com.ibm.security.jgss.IBMJGSSProvider security.provider.5=com.ibm.security.cert.IBMCertPath security.provider.6=com.ibm.security.sasl.IBMSASLBeispiel: Wenn Sie im FIPS-konformen Modus ausgeführt werden müssen und Sie den Provider IBMJSSE verwenden, verwenden Sie eine java.security-Datei, die dem folgenden Beispiel ähnelt:
# Set the Java security providers security.provider.1=com.ibm.fips.jsse.IBMJSSEFIPSProvider security.provider.2=com.ibm.crypto.fips.provider.IBMJCEFIPS security.provider.3=com.ibm.crypto.provider.IBMJCE security.provider.4=com.ibm.security.jgss.IBMJGSSProvider security.provider.5=com.ibm.security.cert.IBMCertPath security.provider.6=com.ibm.security.sasl.IBMSASLBeispiel: Wenn Sie den SunJSSE-Provider verwenden, verwenden Sie eine java.security-Datei, die dem folgenden Beispiel ähnelt:
# Set the Java security providers security.provider.1=sun.security.provider.Sun security.provider.2=com.sun.rsajca.Provider security.provider.3=com.sun.crypto.provider.SunJCE security.provider.4=com.sun.net.ssl.internal.ssl.ProviderBeispiel: Wenn Sie den Provider IBMCAC verwenden, verwenden Sie eine java.security-Datei, die dem folgenden Beispiel ähnelt:
# Set the Java security providers security.provider.1=sun.security.provider.Sun security.provider.2=com.sun.rsajca.Provider security.provider.3=com.sun.crypto.provider.SunJCE security.provider.4=com.sun.net.ssl.internal.ssl.Provider security.provider.10=com.ibm.security.capi.IBMCACWeitere Informationen zum IBMCAC-Provider finden Sie im Abschnitt Einführung in den IBMCAC-Provider .
- Wenn Sie den IBM Data Server Driver for JDBC and SQLJ im FIPS-konformen Modus verwenden möchten, müssen Sie die Systemeigenschaft com.ibm.jsse2.JSSEFIPS Java festlegen:
com.ibm.jsse2.JSSEFIPS=trueEinschränkung: JSSE-Anwendungen ohne FIPS-Modus können nicht in einer JVM ausgeführt werden, die im FIPS-Modus ausgeführt wird.Einschränkung: Wenn der IBMJSSE2 -Provider im FIPS-Modus ausgeführt wird, kann die Hardwareverschlüsselung nicht verwendet werden. - Konfigurieren Sie die Java Runtime Environment für die SSL-Socket-Factory-Provider, indem Sie Einträge zur Datei java.security hinzufügen. Dieser Schritt ist nicht erforderlich, wenn Sie den SunJSSE-Provider und die Laufzeitumgebung von Java (7 oder höher) verwenden.
Das Format der SSL-Socket-Factory-Provider-Einträge wird angezeigt:
ssl.SocketFactory.provider=name_des_providerpakets ssl.ServerSocketFactory.provider=name_des_providerpaketsGeben Sie den SSL-Socket-Factory-Provider für den Sicherheitsprovider von Java an, den Sie verwenden.
Beispiel: Wenn Sie den FIPS-Modus im IBMJSSE2-Provider aktivieren, schließen Sie SSL-Socket-Factory-Provider-Einträge in die Datei java.security ein:
# Set the SSL socket factory provider ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImplBeispiel: Wenn Sie den FIPS-Modus im IBMJSSE-Provider aktivieren, schließen Sie SSL-Socket-Factory-Provider-Einträge in die Datei java.security ein:
# Set the SSL socket factory provider ssl.SocketFactory.provider=com.ibm.fips.jsse.JSSESocketFactory ssl.ServerSocketFactory.provider=com.ibm.fips.jsse.JSSEServerSocketFactoryBeispiel: Wenn Sie den SunJSSE-Provider und die Java Runtime Environment 6 oder früher verwenden, schließen Sie SSL-Socket-Factory-Provider-Einträge ein:
# Set the SSL socket factory provider ssl.SocketFactory.provider=com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl ssl.ServerSocketFactory.provider=com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl - Konfigurieren Sie die Java-Systemeigenschaften, um den Truststore zu verwenden.
Geben Sie dazu die folgenden Java-Systemeigenschaften an:
- javax.net.ssl.trustStore
- Gibt den Namen des Truststores an, den Sie mit dem Parameter "-keystore" im Dienstprogramm "keytool" in Schritt 1 angegeben haben.
Wenn die IBM Data Server Driver for JDBC and SQLJ -Eigenschaft DB2BaseDataSource.sslTrustStoreLocation, db2.jcc.override.sslTrustStoreLocation oder db2.jcc.sslTrustStoreLocation festgelegt ist, überschreibt ihr Wert den Eigenschaftswert "javax.net.ssl.trustStore".
- javax.net.ssl.trustStorePassword (optional)
- Gibt das Kennwort für den Truststore an. Sie müssen kein Truststore-Kennwort festlegen. Wenn Sie das Kennwort jedoch nicht festlegen, können Sie die Integrität des Truststores nicht schützen.
Wenn die IBM Data Server Driver for JDBC and SQLJ -Eigenschaft DB2BaseDataSource.sslTrustStorePassword, db2.jcc.override.sslTrustStorePassword oder db2.jcc.sslTrustStorePassword festgelegt ist, überschreibt dessen Wert den Eigenschaftswert "javax.net.ssl.trustStore".
Wenn Sie eine vertrauenswürdige Zertifikatsdatei verwenden (wenn DB2BaseDataSource.sslCertLocation, db2.jcc.override.sslCertLocation oder db2.jcc.sslCertLocation gesetzt ist), werden die Werte javax.net.ssl.trustStore und javax.net.ssl.trustStorePassword nicht verwendet.
Beispiel: Eine Möglichkeit, Java -Systemeigenschaften festzulegen, besteht darin, diese als Argumente der Option -D anzugeben, wenn Sie eine Java -Anwendung ausführen. Angenommen, Sie möchten eine Java-Anwendung mit dem Namen MySSL.java ausführen, die unter Verwendung einer SSL-Verbindung auf eine Datenquelle zugreift. Wenn Sie einen Truststore mit dem Namen cacerts definiert haben, legt der folgende Befehl den Namen des Truststores fest, wenn Sie die Anwendung ausführen.
java -Djavax.net.ssl.trustStore=cacerts MySSL - Um den Provider von Common Access Card (IBMCAC) zu aktivieren, überschreiben Sie die standardmäßigen Truststore-und Keystore-Definitionen:
-Djavax.net.ssl.trustStoreType=Windows-ROOT -Djavax.net.ssl.keyStoreType=Windows-MY