viernes, 17 de mayo de 2013

Importar certificados en WebLogic


Una tarea administrativa muy común es la de importar certificados digitales en el servidor WebLogic para comunicarse con otros sistemas utilizando un medio de comunicación seguro, en este caso a través del protocolo SSL.

Esta tarea se convierte en obligatoria cuando tenemos una aplicación que necesita consumir una aplicación o servicio externo, ya sea que se encuentre en otro servidor WebLogic, o cualquier otro servidor de aplicaciones.  Normalmente, para tener acceso a estas aplicaciones remotas utilizamos el protocolo HTTPS, lo cual es una versión del protocolo HTTP con soporte del protocolo SSL.

En esta entrada voy a ejemplificar como importar un certificado en el servidor WebLogic para que pueda conectarse al sistema de ElasticEmail, el cual requiere una comunicación con HTTPS. ElasticEmail está disponible en la siguiente URL https://api.elasticemail.com.

Pre-requisitos
  • Cuenta de usuario administrador WebLogic
  • Acceso a la utilería openssl
  • Acceso a la utilería keytool

Procedimiento

1. Existen distintas formas y medios para obtener el certificado de un sistema/servidor, desde un navegador Web (Internet Explorer, Google Chrome, etc) hasta programas dedicados como openssl. En este caso voy a utilizar openssl para crear una conexión ElasticEmail:

-bash-3.2$ openssl s_client -connect api.elasticemail.com:443

2. Ubicar el certificado, delimitado por las cadenas -----BEGIN CERTIFICATE----- y -----END CERTIFICATE-----
Por ejemplo:


3. Copiar y pegar el certificado en un archivo

-bash-3.2$ vi elastic-email.crt


4. En este ejemplo voy a utilizar la utilería keytool del JDK de java para importar el certificado generado en el paso anterior en el keystore de confianza (trust keystore) del servidor WebLogic:

keytool -import -v -trustcacerts -alias elastic-email  -file elastic-email .crt -keystore /opt/oracle/middleware/wlserver_10.3/server/lib/DemoTrust.jks  -storepass DemoTrustKeyStorePassPhrase

Nota: Para efectos de ejemplo, el certificado se importa en el keystore demo del servidor WebLogic. En su ambiente productivo importelo en su propio trust keystore.

5. Finalmente, se debe reiniciar el módulo SSL del servidor WebLogic, o en su defecto reinicar todo el servidor Weblogic en donde se encuentra la aplicación que requiere conectarse a ElasticEmail.



En mi experiencia, en algunos casos ha sido necesario agregar el certificado al keystore del JDK, me refiero al archivo cacerts que se encuentra en $JAVA_HOME/jre/lib/security. Esto ah sido necesario en certificados como los de Google. En este caso podemos usar:

keytool -import -v -trustcacerts -alias elastic-email  -file elastic-email .crt -keystore  $JAVA_HOME/jre/lib/security/cacerts  -storepass changeit