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
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:
Stammverzeichnis_des_Anwendungsservers/java/jre/lib/security
Stammverzeichnis_des_Anwendungsservers/properties
Profilstammverzeichnis/properties
Anwendungsprogrammierschnittstelle
- 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]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
- Version 1.6
- Rufen Sie die Website http://www.ibm.com/developerworks/java/jdk/security/ auf.
- Klicken Sie auf Java 1.6.
- Klicken Sie im Abschnitt "Java Secure Socket Extension (JSSE) Guide" auf "Javadoc HTML documentation".
Beispiele für die Verwendung der Java Secure Socket Extension
- Version 1.6
- Rufen Sie die Website http://www.ibm.com/developerworks/java/jdk/security/ auf.
- Klicken Sie auf Java 1.6.
- Klicken Sie im Abschnitt "Java Secure Socket Extension (JSSE) Guide" auf jssedocs_samples.zip.
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. |
Berechtigungen für Java-2-Sicherheit
- 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"
- java.security.SecurityPermission "putProviderProperty.IBMJSSE"
- java.security.SecurityPermission "insertProvider.IBMJSSE"
- 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.
Der Wert
true aktiviert die Tracefunktion, sofern die Debug-Version der
JSSE installiert ist.
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
- 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])
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
- 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
- Symmetrische Massenverschlüsselung wie DES, RC2 und IDEA
- Symmetrische Datenstromverschlüsselung wie RC4
- Asymmetrische Verschlüsselung wie RSA
- Kennwortbasierte Verschlüsselung
- Schlüsselvereinbarung
- Nachrichtenauthentifizierungscodes
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
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".