Especificación programada de una configuración SSL de salida utilizando la API JSSEHelper

WebSphere Application Server proporciona un modo de especificar programáticamente las configuraciones SSL (Secure Sockets Layer) que se han de utilizar antes de realizar una conexión de salida. La interfaz com.ibm.websphere.ssl.JSSEHelper proporciona un conjunto completo de interfaces de programación de aplicaciones, API, para manejar las configuraciones SSL.

Acerca de esta tarea

Realice los pasos siguientes para la aplicación cuando utilice la API JSSEHelper para establecer un objeto de propiedades SSL en la hebra para utilizarlo durante la ejecución. Algunas de estas API tienen requisitos de permisos de Java™ 2 Security. Consulte la documentación de la API JSSEHelper para obtener más información acerca de los permisos que necesita su aplicación.

Seleccione el método que mejor se ajuste a su situación de conexión cuando especifique de forma programada qué configuraciones SSL (Secure Sockets Layer) se han de utilizar antes de realizar una conexión de salida.

Procedimiento

  1. Obtenga una instancia de la API de JSSEHelper.
    com.ibm.websphere.ssl.JSSEHelper jsseHelper  = com.ibm.websphere.ssl.JSSEHelper.getInstance();
  2. Obtenga las propiedades SSL de la configuración de WebSphere Application Server o utilice las que proporcione la aplicación. Utilice una de las opciones siguientes.
    • Mediante la selección de un nombre de alias, dentro del mismo ámbito de gestión o superior como en el ejemplo siguiente:
      try 
      { 	String alias = "NodeAServer1SSLSettings";
        // Como se especifica en las propiedades de configuración SSL de WebSphere
       sslProps = jsseHelper.getProperties(alias); }
       catch (com.ibm.websphere.ssl.SSLException e)
       { 	e.printStackTrace();   // manejar excepción }
    • Utilizando la API getProperties para la selección programada, de dirección, dinámica, de salida o de ámbito de gestión (según las normas de prioridad y de herencia). La ejecución SSL utiliza la API getProperties para determinar qué configuración SSL se ha de utilizar para un protocolo determinado. Esta decisión está basada en la entrada (sslAlias y connectionInfo) y en el ámbito de gestión desde el que se llama a la propiedad. La API getProperties efectúa las decisiones en el orden siguiente:
      1. La API comprueba la hebra para ver si ya existen las propiedades.
      2. La API comprueba una configuración dinámica de salida que coincide con ENDPOINT_NAME, REMOTE_HOST o REMOTE_PORT.
      3. La API comprueba si se ha especificado la propiedad sslAlias opcional. Puede configurar cualquier protocolo como gestionado directa o centralmente. Cuando se configura un protocolo como directo, el parámetro sslAlias es null. Cuando se configura un protocolo como gestionado centralmente, el parámetro sslAlias también es null.
      4. Si no se efectúa ninguna selección, la API selecciona la configuración de salida dinámica basándose en el ámbito de gestión desde el que se ha llamado. Si la configuración de la salida dinámica no se ha definido en el mismo ámbito, busca la jerarquía para localizar una.

      La última opción es la configuración SSL de ámbito de célula (en WebSphere Application Server, Network Deployment) o la configuración SSL de ámbito de nodo (en Base Application Server). Se notifica al parámetro com.ibm.websphere.ssl.SSLConfigChangeListener cuando cambia la configuración SSL seleccionada mediante una llamada a la API getProperties. A continuación, el protocolo puede volver a llamar a la API para obtener las propiedades nuevas como en el ejemplo siguiente:

      try { 	String sslAlias = null;
       // Esta vez no se especifica sslAlias directamente. 	String host = "myhost.austin.ibm.com";
       // el host de destino 	String port = "443";
       // el puerto de destino  	HashMap connectionInfo = new HashMap();
       connectionInfo.put(JSSEHelper.CONNECTION_INFO_DIRECTION,    JSSEHelper.DIRECTION_OUTBOUND);
       connectionInfo.put(JSSEHelper.CONNECTION_INFO_REMOTE_HOST, host);
       connectionInfo.put(JSSEHelper.CONNECTION_INFO_REMOTE_PORT,    Integer.toString(port));
      		connectionInfo.put(JSSEHelper.CONNECTION_INFO_ENDPOINT_NAME,    JSSEHelper.ENDPOINT_IIOP);
                  		java.util.Properties props = jsseHelper.getProperties(sslAlias,    connectionInfo, null); }
       catch (com.ibm.websphere.ssl.SSLException e)
       { 	e.printStackTrace();   // manejar excepción }
    • Crear propiedades SSL personalizadas y pasarlas a continuación al tiempo de ejecución como en el ejemplo siguiente:
      try {
      		// Este es el conjunto "mínimo" recomendado de propiedades SSL. El almacén de confianza puede
       		// ser el mismo que el almacén de claves. 	Properties sslProps = new Properties();
      		sslProps.setProperty("com.ibm.ssl.trustStore", "un valor");
      		sslProps.setProperty("com.ibm.ssl.trustStorePassword", "un valor");
      		sslProps.setProperty("com.ibm.ssl.trustStoreType", "un valor");
      		sslProps.setProperty("com.ibm.ssl.keyStore", "un valor");
      		sslProps.setProperty("com.ibm.ssl.keyStorePassword", "un valor");
      		sslProps.setProperty("com.ibm.ssl.keyStoreType", "un valor");
       	jsseHelper.setSSLPropertiesOnThread(sslProps); }
       catch (com.ibm.websphere.ssl.SSLException e) 
      { 	e.printStackTrace();   // manejar excepción }
  3. Utilice la API JSSEHelper.setSSLPropertiesOnThread(props) para establecer el objeto Properties en la hebra, de modo que el tiempo de ejecución lo capture y utilice la misma API JSSEHelper.getProperties. También puede obtener propiedades desde la hebra después de que se hayan establecido con la API jsseHelper.getSSLPropertiesOnThread() como en el ejemplo siguiente:
    try 
    { 	Properties sslProps = jsseHelper.getProperties(null,    connectionInfo, null);
    jsseHelper.setSSLPropertiesOnThread(sslProps); }
     catch (com.ibm.websphere.ssl.SSLException e) 
    { 	e.printStackTrace();   // manejar excepción }
  4. Cuando la conexión se ha completado, debe borrar las propiedades SSL de la hebra pasando el valor null a la API setPropertiesOnThread.
    try
     { 	jsseHelper.setSSLPropertiesOnThread(null); }
     catch (com.ibm.websphere.ssl.SSLException e) 
     { 	e.printStackTrace();   // manejar excepción }

Icon that indicates the type of topic Task topic



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