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


13 comentarios:

  1. Oi ... Este é o blog perfeito para quem quer saber sobre este tópico. Você sabe Você definitivamente colocar uma nova rodada sobre um assunto thats sido escrito sobre por anos. Grandes coisas, ótimo!
    Certificado e-cpf

    ResponderEliminar
  2. PD: con tomcat y cliente directo de java sí logro conectarme =/

    ResponderEliminar
  3. Hola, gracias, he estado haciendo esto pero tengo un error,
    el certificado que importo esTLS Web Server Authentication (1.3.6.1.5.5.7.)
    estoy usando weblogic 10.3.5



    http://theheat.dk/blog/?p=2059

    alguna recomendación?


    ResponderEliminar
  4. Hola gracias por tu post.

    Una pregunta en este caso es el privado o publico lo q estas instalando.

    ResponderEliminar
    Respuestas
    1. Que tal, instalamos el certificado con la llave pública; La llave privada se maneja en el servidor remoto.

      Saludos,

      Eliminar
    2. Muchas gracias pr responder,
      en el caso de que se requiera el certificado privado para encriptar de nuestro lado, tambien se instala tal como lo comentas ?

      Eliminar
    3. No, para ese caso debes instarlo como un certificado de identidad, es un procedimiento similar, pero tiene pasos adicionales.

      Para un ambiente productivo lo recomendable es que generes tu propio keystore de identidad, en el cual se almacena tu certificado de identidad, o bien puedes utilizar el identity keystore por defecto.

      Una vez que tengas tu keystore de identidad debes realizar la configuración correspondiente desde la Consola de Administración WebLogic, en Servers > "nombre del servidor weblogic" > General Configuration > Keystores, y Servers > "nombre del servidor weblogic" > General Configuración > SSL.

      Saludos,

      Eliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. Hola tengo problemas al instalar certificado en weblogic 11g... crees poder ayudarme x favor??

    ResponderEliminar
  7. Buenos días

    Una pregunta, por que en casos es necesario subir los certificados al cacert y no basta con el demotrust?

    AL igual en que casos también hay que ponerlos en el demoidentity?

    Gracias

    ResponderEliminar
  8. En algunos casos es necesario por que el DemoTrust no cuenta con todos los certificados de raíz que existen, ya sea porque puede existir nuevos certificados o los que existen expiran y son actualizados, también porque puede surgir nuevas Autoridades Certificadoras que emiten nuevos certificados.

    En el DemoTrust ponemos los certificados de los servidores externos a los cuales alguna aplicación que esta en tu servidor weblogic necesita comunicarse, es como tener la llave para abrir la puerta del servidor externo.

    En el DemoIdentity colocamos los certificados que tu servidor weblogic va a utilizar para presentar su identidad, bien puede ser un certificado firmado por una autoridad o un certificado auto-firmado.

    ResponderEliminar