Sichere Transporte mit JSSE- und JCE-Programmierschnittstellen

Dieser Artikel enthält ausführliche Informationen zur Transportsicherheit bei Verwendung von JSSE- (Java™ Secure Socket Extension) und JCE-Programmierschnittstellen (Java Cryptography Extension). In diesem Artikel finden Sie eine Beschreibung der IBM® Version von Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS).

Java Secure Socket Extension

JSSE stellt die Transportsicherheit für WebSphere Application Server bereit. JSSE unterstützt das API-Gerüst und die API-Implementierung für die Protokolle SSL (Secure Sockets Layer) und TLS (Transport Layer Security), darunter Funktionen für Datenverschlüsselung, Nachrichtenintegrität und Authentifizierung.

Die JSSE-APIs sind in das Java 2 SDK, Standard Edition (J2SDK) Version 5 integriert. Das API-Paket für die JSSE-APIs hat den Namen javax.net.ssl.*. Die Dokumentation zur Verwendung der JSSE-APIs finden Sie in der API-Dokumentation zu J2SE Version unter der Webadresse http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html.

Das Java 2 SDK Version 5, das mit WebSphere Application Server bereitgestellt wird, enthält mehrere JSSE-Provider. Der IBMJSSE-Provider wurde in früheren Releases von WebSphere Application Server verwendet.

Nähere Informationen zum neuen Provider IBMJSSE2 finden Sie at der Dokumentation unter http://www.ibm.com/developerworks/java/jdk/security/60/.

Java Secure Socket Extension anpassen

Sie können einige JSSE-Elemente durch das Integrieren von Implementierungen anderer Verschlüsselungsprovider, durch das X509-Zertifikat und durch HTTPS-Protokolle oder durch die Angabe anderer Standard-Keystore-Dateien, Key Manager Factorys und Trust Manager Factorys anpassen. Die Elemente, die angepasst werden können, sind in der folgenden Tabelle zusammengefasst. Dieser Tabelle können Sie die Standardwerte und die anwendbaren Anpassungsmechanismen entnehmen.
Tabelle 1. Anpassbare Elemente. Sie können die folgenden wichtigen Elemente anpassen:
Anpassbares Element Standardeinstellung Anpassungsmöglichkeit
X509-Zertifikat X509Certificate-Implementierung von IBM Sicherheitseigenschaft "cert.provider.x509v1"
HTTPS-Protokoll Implementierung von IBM Systemeigenschaft "java.protocol.handler.pkgs"
Provider des Verschlüsselungspakets IBMJSSE2 Zeile security.provider.n= in der Sicherheitseigenschaftendatei. Lesen Sie die zugehörige Beschreibung.
Standard-Keystore Ohne Systemeigenschaft * javax.net.ssl.keyStore
Standard-Truststore jssecacerts, sofern vorhanden, andernfalls cacerts Systemeigenschaft * javax.net.ssl.trustStore
Standardfactory für Key Manager IbmX509 Sicherheitseigenschaft "ssl.KeyManagerFactory.algorithm"
Standardfactory für Trust-Manager IbmX509 Sicherheitseigenschaft "ssl.TrustManagerFactory.algorithm"

Wenn Elemente über eine Systemeigenschaft angepasst werden können, setzen Sie die Systemeigenschaft statisch mit der Option -D des Java-Befehls. Sie können die Systemeigenschaft in der Administrationskonsole festlegen. Sie können die Systemeigenschaft aber auch dynamisch setzen, indem Sie in Ihrem Code wie folgt die Methode "java.lang.System.setProperty" aufrufen: System.setProperty(Eigenschaftsname,Eigenschaftswert").

Geben Sie für Elemente, die Sie mit einer Java-Sicherheitseigenschaft anpassen können, statisch einen Wert für die Sicherheitseigenschaft in der Eigenschaftendatei java.security an. Die Sicherheitseigenschaft ist "Eigenschaftsname=Eigenschaftswert". Sie können die Java-Sicherheitseigenschaft dynamisch festlegen, indem Sie in Ihrem Code die Methode "java.security.Security.setProperty" aufrufen.

Die Eigenschaftendatei java.security befindet sich in dem folgenden Verzeichnis:

[AIX Solaris HP-UX Linux Windows]Stammverzeichnis_des_Anwendungsservers/java/jre/lib/security

[z/OS]Stammverzeichnis_des_Anwendungsservers/properties

[IBM i]Profilstammverzeichnis/properties

Anwendungsprogrammierschnittstelle

Die JSSE stellt eine Standard-API (Anwendungsprogrammierschnittstelle) bereit, die in den Paketdateien javax.net, javax.net.ssl und javax.security.cert enthalten ist. Die APIs können für folgende Bereiche eingesetzt werden:
  • Sockets und SSL-Sockets
  • Factorys zum Erstellen der Sockets und SSL-Sockets
  • Secure-Socket-Kontext, der als Factory für Secure Socket Factorys verwendet wird
  • Schnittstellen für Key Manager und Trust Manager
  • Klassen für sichere HTTP-URL-Verbindungen
  • API für Public-Key-Zertifikate
[AIX Solaris HP-UX Linux Windows][IBM i]Weitere Einzelheiten zu den JSSE-APIs finden Sie über die folgenden Informationen:
Version 1.6
  1. Rufen Sie die Website http://www.ibm.com/developerworks/java/jdk/security/ auf.
  2. Klicken Sie auf Java 1.6.
  3. Klicken Sie im Abschnitt "Java Secure Socket Extension (JSSE) Guide" auf "Javadoc HTML documentation".

Beispiele für die Verwendung der Java Secure Socket Extension

Die JSSE (Java Secure Socket Extension) stellt auch Beispiele bereit, die ihre Funktionalität demonstrieren. Die JSSE (Java Secure Socket Extension) stellt auch Beispiele bereit, die ihre Funktionalität demonstrieren. Im Folgenden wird beschrieben, wo Sie die Beispiele finden:
Version 1.6
  1. Rufen Sie die Website http://www.ibm.com/developerworks/java/jdk/security/ auf.
  2. Klicken Sie auf Java 1.6.
  3. Klicken Sie im Abschnitt "Java Secure Socket Extension (JSSE) Guide" auf jssedocs_samples.zip.
Tabelle 2. Extrahierte Dateien. In dieser Tabelle sind die folgenden extrahierten Dateien aufgelistet:
Dateien Beschreibung
ClientJsse.java Demonstriert eine einfache Client-Server-Interaktion mit JSSE. Es werden alle aktivierten Verschlüsselungsverfahren verwendet.
OldServerJsse.java Beispiele für frühere Versionen
ServerPKCS12Jsse.java Demonstriert eine einfache Client-Server-Interaktion unter Verwendung der JSSE mit der PKCS12-Keystore-Datei. Es werden alle aktivierten Verschlüsselungsverfahren verwendet.
ClientPKCS12Jsse.java Demonstriert eine einfache Client-Server-Interaktion unter Verwendung der JSSE mit der PKCS12-Keystore-Datei. Es werden alle aktivierten Verschlüsselungsverfahren verwendet.
UseHttps.java Demonstriert den Zugriff auf einen SSL-Web-Server oder einen Nicht-SSL-Web-Server mit dem Java-Protokollhandler der Klasse "com.ibm.net.ssl.www.protocol". Der URL wird mit dem Präfix http oder https angegeben. Die von der Site zurückgegebene HTML wird angezeigt.
Weitere Anweisungen finden Sie im Quellcode. Lesen Sie die Anweisungen vor Ausführung der Beispiele gründlich durch.

Berechtigungen für Java-2-Sicherheit

Für die Ausführung einer Anwendung mit JSSE können die folgenden Berechtigungen erforderlich sein (die Liste dient nur als Referenz):
  • java.util.PropertyPermission "java.protocol.handler.pkgs", "write"
  • java.lang.RuntimePermission "writeFileDescriptor"
  • java.lang.RuntimePermission "readFileDescriptor"
  • java.lang.RuntimePermission "accessClassInPackage.sun.security.x509"
  • java.io.FilePermission "${Installationsstammverzeichnis.für.Benutzer}${/}etc${/}.keystore", "read"
  • java.io.FilePermission "${Installationsstammverzeichnis.für.Benutzer}${/}etc${/}.truststore", "read"
Für den Provider IBMJSSE:
  • java.security.SecurityPermission "putProviderProperty.IBMJSSE"
  • java.security.SecurityPermission "insertProvider.IBMJSSE"
Für den Provider SUNJSSE:
  • java.security.SecurityPermission "putProviderProperty.SunJSSE"
  • java.security.SecurityPermission "insertProvider.SunJSSE"

Debugging

JSSE stellt mit der Systemeigenschaft "javax.net.debug" eine Option für dynamischen Debug-Trace bereit. Sie können die Eigenschaft wie folgt konfigurieren: -Djavax.net.debug=true.

[AIX Solaris HP-UX Linux Windows][IBM i]Der Wert true aktiviert die Tracefunktion, sofern die Debug-Version der JSSE installiert ist.

[z/OS]Der Wert true aktiviert die Tracefunktion. Die Systemeigenschaft für das Debugging des Anwendungsservers können Sie in der Administrationskonsole setzen.

Dokumentation

Dokumentationsreferenzen auf JSSE finden Sie im Artikel "Sicherheit: Lernmaterial".

JCE

Die JCE (Java Cryptography Extension) stellt Verschlüsselungs-, Schlüssel- und Hash-Algorithmen für WebSphere Application Server zur Verfügung. JCE unterstützt ein Gerüst und Implementierungen für Verschlüsselung, Schlüsselgenerierung und -vereinbarung sowie Algorithmen für den Nachrichtenauthentifizierungscode. Im Bereich der Verschlüsselung werden unter anderem symmetrische und asymmetrische Verschlüsselungsverfahren, aber auch Block- und Datenstromverschlüsselungsverfahren unterstützt.

IBMJCE

Die IBM Version von Java Cryptography Extension (IBMJCE) ist eine Implementierung des JCE-Verschlüsselungs-Service-Providers, der in WebSphere Application Server verwendet wird. IBMJCE ist mit SunJCE vergleichbar, bietet jedoch mehr Algorithmen an:
  • Verschlüsselungalgorithmus (AES, DES, TripleDES, PBEs, Blowfish usw.)
  • Signaturalgorithmus (SHA1withRSA, MD5withRSA, SHA1withDSA)
  • Nachrichten-Digest-Algorithmus (MD5, MD2, SHA1, SHA-256, SHA-384, SHA-512)
  • Nachrichtenauthentifizierungscode (HmacSHA1, HmacMD5)
  • Algorithmus für Schlüsselvereinbarung (DiffieHellman)
  • Algorithmus für Generierung von Zufallszahlen (IBMSecureRandom, SHA1PRNG)
  • Keystore (JKS, JCEKS, PKCS12, JCERACFKS [nur z/OS])
IBMJCE gehört zu den Paketen com.ibm.crypto.provider.*.

Nähere Informationen hierzu finden Sie in den Informationen zu JCE auf der folgenden Website: http://www.ibm.com/developerworks/java/jdk/security/60/.

IBMJCEFIPS

Die IBM Version von Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS) ist eine Implementierung des JCE-Verschlüsselungs-Service-Providers, der in WebSphere Application Server verwendet wird. Der Service-Provider IBMJCEFIPS implementiert Folgendes:
  • Signaturalgorithmen (SHA1withDSA, SHA1withRSA)
  • Verschlüsselungsalgorithmen (AES, TripleDES, RSA)
  • Algorithmus für Schlüsselvereinbarung (DiffieHellman)
  • Schlüsselpaargenerator (DSA, AES, TripleDES, HmacSHA1, RSA, DiffieHellman)
  • Nachrichtenauthentifizierungscode (MAC, HmacSHA1)
  • Nachrichten-Digest (MD5, SHA-1, SHA-256, SHA-384, SHA-512)
  • Generator für Algorithmusparameter (DiffieHellman, DSA)
  • Algorithmusparameter (AES, DiffieHellman, DES, TripleDES, DSA)
  • Schlüsselfactory (DiffieHellman, DSA, RSA)
  • Factory für geheime Schlüssel (AES, TripleDES)
  • Zertifikat (X.509)
  • Sichere Zufallszahlen (IBMSecureRandom)

Anwendungsprogrammierschnittstelle

Java Cryptography Extension (JCE) hat eine providergestützte Architektur. Provider, die die von der JCE definierten APIs implementieren, können als Plug-ins in das JCE-Gerüst integriert werden. Die JCE-APIs können für folgende Bereiche eingesetzt werden:
  • Symmetrische Massenverschlüsselung wie DES, RC2 und IDEA
  • Symmetrische Datenstromverschlüsselung wie RC4
  • Asymmetrische Verschlüsselung wie RSA
  • Kennwortbasierte Verschlüsselung
  • Schlüsselvereinbarung
  • Nachrichtenauthentifizierungscodes

[AIX Solaris HP-UX Linux Windows][IBM i]Weitere Informationen zu den JCE-APIs finden Sie auf der Website http://www.ibm.com/developerworks/java/jdk/security/.

Beispiele für die Verwendung von Java Cryptography Extension

Sie finden diese Beispiele auf der Website http://www.ibm.com/developerworks/java/jdk/security/ in der Datei jceDocs_samples.zip. Dekomprimieren Sie die Datei und suchen Sie die folgenden Beispiele im Verzeichnis jceDocs/samples:
Tabelle 3. Beispiele für die Verwendung von Java Cryptography Extension. In dieser Tabelle sind die Beispiele beschreiben, in denen Java Cryptography Extension verwendet wird.
Datei Beschreibung
SampleDSASignature.java Demonstriert das Generieren eines DSA-Schlüsselpaars (öffentlicher und privater Schlüssel) sowie die Verwendung des Schlüssels zum digitalen Signieren einer Nachricht mit dem DSA-Algorithmus SHA1withDSA.
SampleMarsCrypto.java Demonstriert das Generieren eines geheimen MARS-Schlüssels sowie die Ausführung der MARS-Verschlüsselung und -Entschlüsselung.
SampleMessageDigests.java Demonstriert die Verwendung des Nachrichtenauszugs für MD2- und MD5-Algorithmen.
SampleRSACrypto.java Demonstriert das Generieren eines RSA-Schlüsselpaars sowie die Ausführung der RSA-Verschlüsselung und -Entschlüsselung.
SampleRSASignatures.java Demonstriert das Generieren eines RSA-Schlüsselpaars (öffentlicher und privater Schlüssel) sowie die Verwendung des Schlüssels zum digitalen Signieren einer Nachricht mit dem RSA-Algorithmus SHA1with.
SampleX509Verification.java Demonstriert die Prüfung von X509-Zertifikaten

Dokumentation

Informationen zur Dokumentation zu JCE finden Sie im Artikel "Sicherheit: Lernmaterial".


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_jsse
Dateiname:csec_jsse.html