Transportes seguros con las interfaces de programas JSSE y JCE

Puede obtener información detallada sobre la seguridad de transporte utilizando las interfaces de programas JSS (Java™ Secure Socket Extension) y JCE (Java Cryptography Extension). En este tema, hay una descripción de la versión de IBM® del estándar IBMJCEFIPS (Java Cryptography Extension Federal Information Processing Standard).

JSSE (Java Secure Socket Extension)

JSSE proporciona seguridad de transporte para WebSphere Application Server. JSSE proporciona la infraestructura de interfaces de programas de aplicación (API) y la implementación de las API para los protocolos SSL (Secure Sockets Layer) y TLS (Transport Layer Security), incluidas las funciones de cifrado de datos, integridad de mensajes y autenticación.

Las API de JSSE se integran en Java 2 SDK, Standard Edition (J2SDK), Versión 5. El paquete de API para las API de JSSE es javax.net.ssl.*. Puede encontrar la documentación para utilizar las API de JSSE en la documentación de la API J2SE 6 que encontrará en http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html.

Se entregan varios proveedores JSSE con el Java 2 SDK Versión 5 que se proporciona con WebSphere Application Server. El proveedor IBMJSSE se utiliza en los releases anteriores de WebSphere Application Server.

Para obtener más información sobre el nuevo proveedor IBMJSSE2, revise la documentación que se encuentra en http://www.ibm.com/developerworks/java/jdk/security/60/.

Personalización de JSSE (Java Secure Socket Extension)

Puede personalizar distintos aspectos de JSSE conectando distintas implementaciones del proveedor de paquetes criptográficos, X509Certificate y protocolos HTTPS o, especificando distintos archivos de almacén de claves predeterminados, fábricas de gestores de claves y fábricas de gestores de confianza. La siguiente tabla muestra un resumen de los aspectos que pueden personalizarse, cuáles son los valores predeterminados y qué mecanismos se utilizan para proporcionar la personalización.
Tabla 1. Elementos personalizables. Puede personalizar los siguientes aspectos clave:
Elemento personalizable Valor predeterminado Cómo se personaliza
X509Certificate Implementación de X509Certificate de IBM Propiedad de seguridad cert.provider.x509v1
Protocolo HTTPS Implementación de IBM Propiedad del sistema java.protocol.handler.pkgs
Proveedor de paquetes criptográficos IBMJSSE2 Una línea security.provider.n= en el archivo de propiedades de seguridad. Consulte la descripción.
Almacén de claves predeterminado Ninguno * Propiedad del sistema javax.net.ssl.keyStore
Almacén de confianza predeterminado jssecacerts, si existe. De lo contrario, cacerts * Propiedad del sistema javax.net.ssl.trustStore
Fábrica de gestor de claves predeterminada IbmX509 Propiedad de seguridad ssl.KeyManagerFactory.algorithm
Fábrica de gestor de confianza predeterminada IbmX509 Propiedad de seguridad ssl.TrustManagerFactory.algorithm

Para los aspectos que pueden personalizarse estableciendo una propiedad del sistema, puede establecer de forma estática la propiedad del sistema con la opción -D del mandato Java. Puede establecer la propiedad del sistema con la consola administrativa o, establecer la propiedad del sistema de forma dinámica llamando al método java.lang.System.setProperty en el código: System.setProperty(propertyName,"propertyValue").

En cuanto a los aspectos que pueden personalizarse definiendo una propiedad de seguridad Java, especifique de forma estática un valor de propiedad de seguridad en el archivo de propiedades java.security. La propiedad de seguridad es propertyName=propertyValue. Establezca de forma dinámica la propiedad de seguridad Java llamando al método java.security.Security.setProperty en el código.

El archivo de propiedades java.security se encuentra en el siguiente directorio:

[AIX Solaris HP-UX Linux Windows]directorio raíz_servidor_apl/java/jre/lib/security.

[z/OS]Directorio raíz_servidor_apl/properties.

[IBM i]directorio raíz_perfil/properties.

Interfaz de programas de aplicación

JSSE proporciona una API (interfaz de programas de aplicación) estándar que está disponible en los paquetes de los archivos javax.net, javax.net.ssl y javax.security.cert. Las API cubren:
  • Sockets y SSL sockets SSL
  • Fábricas para crear los sockets y sockets SSL
  • El contexto de socket seguro que actúa como fábrica para las fábricas de sockets seguros
  • Interfaces del gestor de claves y confianza
  • Clases de conexión URL HTTP segura
  • API de certificado de clave pública
[AIX Solaris HP-UX Linux Windows][IBM i]Puede encontrar más información sobre las API de JSSE si accede a la siguiente información:
Versión 1.6
  1. Acceda al sitio web http://www.ibm.com/developerworks/java/jdk/security/.
  2. Pulse Java 1.6.
  3. Pulse Documentación HTML de Javadoc en la sección Guía de JSSE (Java Secure Socket Extension).

Ejemplos de utilización de JSSE (Java Secure Socket Extension)

JSSE (Java Secure Socket Extension) también proporciona ejemplos para demostrar sus funciones. JSSE (Java Secure Socket Extension) también proporciona ejemplos para demostrar sus funciones. Puede acceder a los ejemplos en la siguiente ubicación:
Versión 1.6
  1. Acceda al sitio web http://www.ibm.com/developerworks/java/jdk/security/.
  2. Pulse Java 1.6.
  3. Pulse jssedocs_samples.zip en la sección Java Secure Socket Extension (JSSE) Guide.
Tabla 2. Archivos extraídos. En esta tabla se enumeran los archivos extraídos siguientes:
Archivos Descripción
ClientJsse.java Demuestra una interacción simple de cliente y servidor utilizando JSSE. Se utilizarán todas los suites de cifrado.
OldServerJsse.java Ejemplos antiguos
ServerPKCS12Jsse.java Demuestra una interacción simple de cliente y servidor utilizando JSSE con el archivo de almacén de claves PKCS12. Se utilizarán todas los suites de cifrado.
ClientPKCS12Jsse.java Demuestra una interacción simple de cliente y servidor utilizando JSSE con el archivo de almacén de claves PKCS12. Se utilizarán todas los suites de cifrado.
UseHttps.java Demuestra el acceso a un servidor web SSL o no SSL utilizando el manejador de protocolos Java de la clase com.ibm.net.ssl.www.protocol. El URL se especifica con el prefijo http o https. Se visualizará el HTML devuelto desde este sitio.
Consulte más instrucciones en el código fuente. Siga estas instrucciones antes de ejecutar los ejemplos.

Permisos para la seguridad de Java 2

Para ejecutar una aplicación con JSSE es posible que sean necesarios los siguientes permisos (esta lista se muestra únicamente como referencia):
  • 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 "${user.install.root}${/}etc${/}.keystore", "read"
  • java.io.FilePermission "${user.install.root}${/}etc${/}.truststore", "read"
Para el proveedor IBMJSSE:
  • java.security.SecurityPermission "putProviderProperty.IBMJSSE"
  • java.security.SecurityPermission "insertProvider.IBMJSSE"
Para el proveedor SUNJSSE:
  • java.security.SecurityPermission "putProviderProperty.SunJSSE"
  • java.security.SecurityPermission "insertProvider.SunJSSE"

Depuración

Si se realiza la configuración a través de la propiedad del sistema javax.net.debug, JSSE proporciona el siguiente rastreo de depuración dinámico: -Djavax.net.debug=true.

[AIX Solaris HP-UX Linux Windows][IBM i]Un valor de true activa el recurso de rastreo, a condición de que esté instalada la versión de depuración de JSSE.

[z/OS]Un valor de true activa el recurso de rastreo. Utilice la consola administrativa para establecer la propiedad del sistema con objeto de depurar el servidor de aplicaciones.

Documentación

Consulte el tema Seguridad: Recursos para el aprendizaje para ver referencias de documentación a JSSE.

JCE

JCE (Java Cryptography Extension) proporciona algoritmos hash, de claves y criptográficos para WebSphere Application Server. JCE proporciona una infraestructura e implementaciones para el cifrado, la generación de claves, el acuerdo de claves y los algoritmos MAC (Message Authentication Code). El soporte para el cifrado incluye el bloqueo simétrico, asimétrico y cifrado continuo.

IBMJCE

La versión de IBM de Java Cryptography Extension (IBMJCE) es una implementación del proveedor de servicios criptográficos JCE utilizado en WebSphere Application Server. IBMJCE es parecido a SunJCE, con la excepción de que IBMJCE ofrece más algoritmos como los siguientes:
  • Algoritmo de cifra (AES, DES, TripleDES, PBEs, Blowfish, etc.)
  • Algoritmo de firma (SHA1withRSA, MD5withRSA, SHA1withDSA)
  • Algoritmo de resumen de mensajes (MD5, MD2, SHA1, SHA-256, SHA-384, SHA-512)
  • Código de autenticación de mensajes (HmacSHA1, HmacMD5)
  • Algoritmo de gestión de claves (DiffieHellman)
  • Algoritmo de generación de números aleatorios (IBMSecureRandom, SHA1PRNG)
  • Almacén de claves (JKS, JCEKS, PKCS12, JCERACFKS [z/OS sólo])
IBMJCE pertenece a los paquetes com.ibm.crypto.provider.*.

Para obtener más información, consulte la información sobre JCE en el siguiente sitio web: http://www.ibm.com/developerworks/java/jdk/security/60/.

IBMJCEFIPS

La versión de IBM de Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS) es una implementación del proveedor de servicios criptográficos JCE utilizado en WebSphere Application Server. El proveedor de servicios IBMJCEFIPS implementa lo siguiente:
  • Algoritmos de firma (SHA1withDSA, SHA1withRSA)
  • Algoritmos de cifrado (AES, TripleDES, RSA)
  • Algoritmo de gestión de claves (DiffieHellman)
  • Generador de claves (pares) (DSA, AES, TripleDES, HmacSHA1, RSA, DiffieHellman)
  • Código de autenticación de mensajes (MAC) (HmacSHA1)
  • Resumen de mensajes (MD5, SHA-1, SHA-256, SHA-384, SHA-512)
  • Generador de parámetros de algoritmo (DiffieHellman, DSA)
  • Parámetro de algoritmo (AES, DiffieHellman, DES, TripleDES, DSA)
  • Fábrica de claves (DiffieHellman, DSA, RSA)
  • Fábrica de claves secretas (AES, TripleDES)
  • Certificado (X.509)
  • Aleatorio seguro (IBMSecureRandom)

Interfaz de programas de aplicación

JCE (Java Cryptography Extension) tiene una arquitectura basada en proveedor. Los proveedores pueden conectarse a la infraestructura de JCE implementando las API definidas por JCE. Las API de JCE cubren:
  • Cifrado simétrico masivo, como DES, RC2 e IDEA
  • Cifrado simétrico continuo, como RC4
  • Cifrado asimétrico, como RSA
  • Cifrado basado en contraseña (PBE)
  • Gestión de claves
  • Códigos de autenticación de mensajes

[AIX Solaris HP-UX Linux Windows][IBM i]En el sitio web http://www.ibm.com/developerworks/java/jdk/security/ se documenta más información sobre las API de JCE.

Ejemplos de utilización de JCE (Java Cryptography Extension)

Existen ejemplos en el sitio web http://www.ibm.com/developerworks/java/jdk/security/ dentro del archivo jceDocs_samples.zip. Descomprima el archivo y localice los ejemplos siguientes en el directorio jceDocs/samples:
Tabla 3. Ejemplos de utilización de JCE (Java Cryptography Extension). En esta tabla se describen los ejemplos que utilizan Java Cryptography Extension.
Archivo Descripción
SampleDSASignature.java Demuestra cómo generar un par de claves DSA (una clave pública y una clave privada) y utilizar la clave para firmar digitalmente un mensaje con el algoritmo SHA1withDSA.
SampleMarsCrypto.java Muestra cómo generar una clave secreta Mars y cómo llevar a cabo el cifrado y descifrado Mars.
SampleMessageDigests.java Demuestra cómo utilizar los algoritmos de compendios de mensajes para MD2 y MD5.
SampleRSACrypto.java Demuestra cómo generar un par de claves RSA y cómo llevar a cabo el cifrado y descifrado RSA.
SampleRSASignatures.java Demuestra cómo generar un par de claves RSA (una clave pública y una clave privada) y utilizar la clave para firmar digitalmente un mensaje con el algoritmo SHA1withRSA.
SampleX509Verification.java Demuestra cómo verificar certificados X509

Documentación

Consulte el tema Seguridad: Recursos para el aprendizaje para ver documentación sobre JCE.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_jsse
File name: csec_jsse.html