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
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