Java Runtime Environment für die Verwendung von TLS konfigurieren

Bevor Sie TLS (Transport Layer Security) -Verbindungen in Ihren JDBC -und SQLJ-Anwendungen verwenden können, müssen Sie die Java™ Runtime Environment für die Verwendung von TLSkonfigurieren. Eine Beispielprozedur wird bereitgestellt. Die Prozedur kann jedoch je nach der verwendeten Java Runtime Environment unterschiedlich sein.

Vorbereitende Schritte

Bevor Sie Ihre Java Runtime Environment für TLSkonfigurieren können, müssen Sie die folgenden Voraussetzungen erfüllen:
  • Die Java Runtime Environment muss einen Java-Sicherheitsprovider enthalten. Der JSSE-Provider IBM® oder der Provider SunJSSE muss installiert sein. Der JSSE-Provider IBM wird automatisch mit dem IBM SDK for 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 Unterstützung für TLS muss auf dem Datenbankserver konfiguriert sein.

Prozedur

Führen Sie die folgenden Schritte aus, um Ihre Java Runtime Environment für die Verwendung von TLSzu konfigurieren:

  1. Importieren Sie ein Zertifikat vom Datenbankserver in einen Java-Truststore auf dem Client.

    Verwenden Sie das Java-Dienstprogramm keytool , um das Zertifikat in den Truststore zu importieren.

    Beispiel: Das Serverzertifikat ist in einer Datei namens 'cacerts' gespeichert. Geben Sie die folgende Anweisung des Dienstprogramms keytool aus, um das Zertifikat aus der Datei jcc.cacert zu lesen und es in einem Truststore namens 'cacerts' zu speichern.
    keytool -import -file jcc.cacert -keystore cacerts
    Beispiel: Das Serverzertifikat ist in einer Datei namens mydbserver.arm gespeichert. Geben Sie die folgende keytool -Dienstprogrammanweisung aus, um das Zertifikat aus der Datei mydbserver.armzu lesen und in einem Truststore mit dem Namen mynewdbclient.jkszu speichern.
    keytool -import -trustcacerts -alias myalias -file mydbserver.arm -keystore mynewdbclient.jks
  2. Konfigurieren Sie Java Runtime Environment für die Java-Sicherheitsprovider, indem Sie Einträge zur Datei java.security hinzufügen.

    Das Format eines Sicherheitsproviders ist:

    security.provider.n=provider-package-name
    

    Ein Provider mit einem niedrigeren Wert n hat Vorrang vor einem Provider mit einem höheren Wert n.

    Die Java-Sicherheitsprovidereinträge, die Sie hinzufügen, hängen davon ab, ob Sie den JSSE-Provider IBM oder den Provider SunJSSE verwenden.

    • Wenn Sie den SunJSSE-Provider verwenden, fügen Sie Einträge für die Oracle-Sicherheitsprovider zu Ihrer Datei java.security hinzu.
    • Wenn Sie den JSSE-Provider IBM verwenden, verwenden Sie eine der folgenden Methoden:
      • Verwenden Sie den Provider IBMJSSE2 (unterstützt für IBM SDK for Java 1.4.2 und höher):
        Empfehlung: Verwenden Sie den Provider IBMJSSE2 im FIPS-Modus.
        • Wenn Sie nicht im FIPS-konformen Modus arbeiten müssen:
          • Fügen Sie für IBM SDK for Java 1.4.2einen Eintrag für 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 Datei java.security , die im Lieferumfang von IBM SDK for Java enthalten ist, enthält einen Eintrag für Einträge für IBMJCE.
          • Stellen Sie bei späteren Versionen von IBM SDK for Java sicher, dass Einträge für den Provider IBMJSSE2Provider und IBMJCE in der Datei java.security enthalten sind. Die Datei java.security , die mit IBM SDK for Java geliefert wird, enthält Einträge für diese Provider.
        • Wenn Sie im FIPS-konformen Modus arbeiten müssen:
          • Fügen Sie einen Eintrag für den IBMJCEFIPSProvider zu Ihrer Datei java.security vor dem Eintrag für den IBMJCE-Provider hinzu. Entfernen Sie nicht den Eintrag für den IBMJCE-Provider.
          • Aktivieren Sie den FIPS-Modus im IBMJSSE2-Provider. siehe Schritt 3)
      • Verwenden Sie den IBMJSSE-Provider (nur für IBM SDK for Java 1.4.2 unterstützt):
        • Wenn Sie nicht im FIPS-konformen Modus arbeiten müssen, stellen Sie sicher, dass Einträge für den IBMJSSEProvider und den IBMJCE-Provider in der Datei java.security enthalten sind. Die Datei java.security , die mit IBM SDK for 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-konformen Provider IBMJSSEFIPSProvider und den IBMJCEFIPS -Provider zu Ihrer Datei java.security hinzu, bevor Sie den Eintrag für den Provider IBMJCE hinzufügen.
      Einschränkung: Wenn Sie den IBMJSSE-Provider unter dem Betriebssystem Solaris verwenden, müssen Sie vor den Einträgen für die IBMJCE-, IBMJCEFIPS-, IBMJSSE-oder IBMJSSE2 -Provider einen Eintrag für den SunJSSE -Provider angeben.

    Beispiel: Wenn Sie im FIPS-konformen Modus arbeiten müssen und den FIPS-Modus im IBMJSSE2-Provider aktiviert haben, verwenden Sie eine Datei java.security ähnlich wie im folgenden Beispiel:

    # 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.IBMSASL
    

    Beispiel: Wenn Sie im FIPS-konformen Modus arbeiten müssen und den IBMJSSE-Provider verwenden, verwenden Sie eine Datei java.security ähnlich wie im folgenden Beispiel:

    # 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.IBMSASL
    

    Beispiel: Wenn Sie den SunJSSE-Provider verwenden, verwenden Sie eine Datei java.security ähnlich der in diesem Beispiel:

    # 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
  3. Wenn Sie IBM Data Server Driver for JDBC and SQLJ im FIPS-konformen Modus verwenden möchten, müssen Sie die Java-Systemeigenschaft com.ibm.jsse2.JSSEFIPS festlegen:
    com.ibm.jsse2.JSSEFIPS=true 
    Einschränkung: JSSE-Anwendungen im Nicht-FIPS-Modus können nicht in einer JVM ausgeführt werden, die sich im FIPS-Modus befindet.
    Einschränkung: Wenn der IBMJSSE2 -Provider im FIPS-Modus ausgeführt wird, kann er keine Hardwareverschlüsselung verwenden.
  4. Konfigurieren Sie die Java Runtime Environment für die TLS -Socket-Factory-Provider, indem Sie Einträge zur Datei java.security hinzufügen. Dieser Schritt ist nicht erforderlich, wenn Sie den Provider SunJSSE und Java Runtime Environment 7 oder höher verwenden.

    Das Format der Einträge für den Socket-Factory-Provider TLS wird angezeigt:

    ssl.SocketFactory.provider=provider-package-name
    ssl.ServerSocketFactory.provider=provider-package-name

    Geben Sie den TLS -Socket-Factory-Provider für den von Ihnen verwendeten Java-Sicherheitsprovider an.

    Beispiel: Wenn Sie den FIPS-Modus im Provider IBMJSSE2 aktivieren, schließen Sie TLS -Socket-Factory-Providereinträge in die Datei java.security ein:

    # Set the TLS socket factory provider
    ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl 
    ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImpl 
    

    Beispiel: Wenn Sie den FIPS-Modus im IBMJSSE-Provider aktivieren, schließen Sie TLS -Socket-Factory-Provider-Einträge in die Datei java.security ein:

    # Set the TLS socket factory provider
    ssl.SocketFactory.provider=com.ibm.fips.jsse.JSSESocketFactory
    ssl.ServerSocketFactory.provider=com.ibm.fips.jsse.JSSEServerSocketFactory
    

    Beispiel: Wenn Sie den SunJSSE -Provider und Java Runtime Environment 6 oder früher verwenden, schließen Sie TLS -Socket-Factory-Provider-Einträge ein:

    # Set the TLS socket factory provider
    ssl.SocketFactory.provider=com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl
    ssl.ServerSocketFactory.provider=com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl
    
  5. Konfigurieren Sie Java-Systemeigenschaften für die Verwendung des Truststores.

    Legen Sie dazu die folgenden Java-Systemeigenschaften fest:

    javax.net.ssl.trustStore
    Gibt den Namen des Truststore an, den Sie mit dem Parameter "-keystore" im Dienstprogramm "keytool" in Schritt 1angegeben haben.
    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.

    Beispiel: Sie können Java-Systemeigenschaften festlegen, indem Sie sie als Argumente der Option -D angeben, wenn Sie eine Java-Anwendung ausführen. Angenommen, Sie möchten eine Java-Anwendung namens MyTLS.java ausführen, die über eine TLS -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 MyTLS
  6. Überschreiben Sie zum Aktivieren des IBMCAC-Providers (Common Access Card) die standardmäßigen Truststore- und Schlüsselspeicherdefinitionen:
    -Djavax.net.ssl.trustStoreType=Windows-ROOT
    -Djavax.net.ssl.keyStoreType=Windows-MY