AGESIC Gerencia de Proyectos Configuración de SSL en servidores de aplicación Java Historial de Revisiones Fecha Versión Descripción Autor Aprobado Por 27/06/2011 1.0 Versión inicial Marcelo Caponi Nombre actual del archivo: Tutorial_Configuración_SSL_servidores_Tomcat_JBoss_v1.3.odt Andes 1365 piso 7º Montevideo Uruguay Tel./Fax: (+598) 2901.2929* Email: contacto@agesic.gub.uy www.agesic.gub.uy
Tabla de Contenidos 1 Introducción... 3 2 Configuración de SSL en Tomcat... 4 2.1 Configuración de SSL con autenticación simple... 4 2.2 Configuración de SSL con autenticación mutua... 5 3 Configuración de SSL en JBoss... 6 3.1 Configuración de SSL con autenticación simple... 6 3.2 Configuración de SSL con autenticación mutua... 7 4 Verificación de configuración SSL... 8 4.1 Verificación de autenticación simple... 8 4.2 Verificación de autenticación mutua... 13 4.3 Importación de certificados en Firefox... 14
1 Introducción En el presente documento se describe como habilitar comunicación vía SSL en servidores de aplicación. Los servidores que se presentan son JBoss versión 5.1.0.G.A, y Apache Tomcat versión 7.0.14. Por cada servidor se detalla la configuración de SSL con autenticación simple y mutua. Por último, se ilustra una forma básica de probar que la configuración realizada funciona correctamente. Para esto, se toma como cliente del servidor un navegador Firefox, se le aplican las configuraciones pertinentes, se ejecuta un pedido al servidor y se verifica el funcionamiento esperado. En ambos servidores se hará referencia a <server_home> como la ruta de instalación del servidor. En cualquier caso, es deseable que la ruta en donde se instala el servidor no contenga espacios. En las siguientes dos secciones se ilustra como se habilita la comunicación SSL en los servidores JBoss y Tomcat, y en la última sección se presenta una forma de verificar que la configuración realizada sea correcta. 1 Página CnPág3de 3 183
2 Configuración de SSL en Tomcat En esta sección se detalla cómo configurar el servidor Tomcat con autenticación simple y mutua. 2.1 Configuración de SSL con autenticación simple Para habilitar SSL en Tomcat (autenticación simple) se deberá editar el archivo server.xml que encuentra en el la ruta <server_home>/conf/. Se deberá descomentar la sección que corresponde al conector SSL. Dicha sección se ilustra en la Figura 1. Figura 1: Conector SSL en Tomcat Los atributos que deben setearse son: keystorefile, keystorepass y clientauth, el resto de los atributos pueden dejarse como vienen por defecto. A continuación se describen los atributos antes mecionados. keystorefile: Es la ruta donde se encuentra el archivo keystore. keystorepass: Es donde se especifica el password del keystore. clientauth: En este atributo se debe especificar false para configurar SSL con autentcación simple (no mutua). Pág. 4 de 18
2.2 Configuración de SSL con autenticación mutua Para habilitar autenticación mutua, se debe mantener la misma configuración que en autenticación simple, y a su vez, configurar tres atributos más. Los atributos que se deberían tratar además en la configuración son: truststorefile: Es la ruta donde se encuentra el archivo truststore. truststorepass: Es donde se especifica el password del truststore. clientauth: El valor de este atributo deberá ser cambiado a true para habilitar la autenticación mutua. En la Figura 2 se ilustra un conector similar al de la Figura 1 pero con autenticación mutua. Figura 2: Conector SSL con autenticación mutua en Tomcat Pág. 5 de 18
3 Configuración de SSL en JBoss En esta sección se detalla cómo configurar el servidor JBoss con autenticación simple y mutua. 3.1 Configuración de SSL con autenticación simple La configuración del servidor JBoss para habilitar SSL es similar a la presentada para el servidor Tomcat. En el caso de JBoss, se deberá editar el archivo server.xml el cual se encuentra en la ruta: <server_home>/dafault/deploy/jbossweb.sar/. Cabe mencionar que esa ruta es en caso de que se esté usando la configuración default de JBoss. Se deberá descomentar la sección que corresponde al conector SSL. Dicha sección se ilustra en la Figura 3. Figura 3: Conector SSL en JBoss Los atributos que deben setearse son: keystorefile, keystorepass y clientauth, el resto de los atributos pueden dejarse con sus valores por defecto. Pág. 6 de 18
keystorefile: Es la ruta donde se encuentra el archivo keystore. keystorepass: Es donde se especifica el password del keystore. clientauth: En este atributo se debe especificar el valor false para configurar SSL con autentcación simple (no mutua). 3.2 Configuración de SSL con autenticación mutua Para habilitar autenticación mutua se debe mantener la misma configuración que en autenticación simple, y a su vez, agregar ciertos atributos relativos a la autenticación mutua. Los atributos que se deberían agregar son: truststorefile: Es la ruta donde se encuentra el archivo truststore. truststorepass: Es donde se especifica el password del truststore. clientauth: El valor de este atributo deberá ser cambiado a true para habilitar la autenticación mutua. En la Figura 4 se ilustra un conector similar al de la Figura 3 pero con autenticación mutua. Figura 4: Conector SSL en JBoss con autenticación mutua Pág. 7 de 18
4 Verificación de configuración SSL En esta sección se detalla cómo verificar que las respectivas configuraciones realizadas anteriormente funcionan de manera correcta. 4.1 Verificación de autenticación simple Una vez realizadas las configuraciones de SSL tanto para JBoss como para Tomcat, se podrá probar que la misma funciona adecuadamente de la siguiente manera: Abrir Firefox 1 y escribir para Tomcat la siguiente url https://localhost:8443 2, para JBoss la url: https://localhost:8443/admin-console Una vez solicitada la anterior url, se intentará autenticar al servidor, y por lo tanto éste, presentará su certificado. Si la CA que firmó el mismo está en el 1 La versión de Firefox en el cual se verificó, fue la 3.6.22, en otras versiones puede ser igual o diferir sutilmente. 2 Notar que el puerto de la URL es 8443, el cual debe ser el mismo que el especificado en el atributo port en las configuraciones antes presentadas. Pág. 8 de 18
almacén de confianza de Firefox (truststore), la conexión se establecerá. En caso contrario, se presentará una pantalla indicándonos que se está presentando un certificado emitido por una CA en la que Firefox no confía. La Figura 5 ilustra la misma. Figura 5: Mensaje que ocurre en una conexión SSL en la que no se confía en la CA Luego, expander la opción Entiendo los riesgos tal como se ilusta en la Figura 6. Pág. 9 de 18
Luego, presionar el botón Añadir excepción... obteniendo la pantalla que se ilustra en la Figura 7. Pág. 10 de 18
Figura 7: Confirmando excepción de seguridad A continuación, si presionamos el botón Ver.., podremos ver el certificado que nos envía el servidor, tal como se ilusta en la Figura 8. Pág. 11 de 18
8: Información de certificado enviado por el servidor. Figura Pág. 12 de 18
Se puede apreciar que los datos del certificado corresponden al servidor correcto. En este caso, puede verse que se trata de un certificado de un servidor de testing de AGESIC. Para continuar, presionamos el botón cerrar, se vuelve a la ventana anterior (Figura 7), y presionamos el botón Confirmar excepción de seguridad dado que queremos confiar en la CA que emite ese certificado. Por último, debemos de verificar que la conexión se dió correctamente Si todo es correcto, en ambos casos se presentará la consola de administración de los respectivos servidores. Eso será un indicador de que la conexión se efectuó correctamente. En el caso de JBoss, se presentará una página web como se ilustra en la Figura 9, en el caso de Tomcat una como la Figura 10. Pág. 13 de 18
Figura 9: Consola de administración del servidor JBoss Figura 10: Consola de administración del servidor Tomcat Pág. 14 de 18
4.2 Verificación de autenticación mutua Para la autenticación mutua, los pasos que tienen que segurise son exactamente los mismos que los que se siguen en la sección 8. La única diferencia que existe es que en el último paso (donde se presiona el botón Confirmar excepción de seguridad ) se tiene que agregar un certificado de cliente a Firefox para que éste lo presente ante el servidor. En este paso, si ya tenemos un certificado importado (en caso de que no, ver sección 15), Firefox nos deplegará un popup en donde se podrá seleccionar uno tal como lo ilustra la Figura 11. Figura 11: Certificado digital que presenta Firefox al intentar establecer una conexión SSL con autenticación mutua Al presionar aceptar, se finaliza la conexión y se muestran las consolas administratvias tal como se ilustraron en las Figuras 9 y 10. Si estás son desplegadas correctamente, se verifica que la conexión se realizó correctamente. 4.3 Importación de certificados en Firefox Pág. 15 de 18
Para importar un certificado en Firefox 3, debemos seguir los siguientes pasos: Seleccionamos en el menú Herramientas, la opción Opciones... tal como se ilustra en la Figura 12. Figura 12: Opciones Firefox A continuación, se nos desplega la ventana que se ilusta en la Figura 13, presionamos la solapa Avanzado y luego el botón Ver certificados. 3 La versión de Firefox en el cual se importaron los certificados fue la 3.6.22, en otras versiones puede ser igual o diferir sutilmente. Pág. 16 de 18 Figura 13: Ventana ver certificados de Firefox
Figura 14: Importando certificados en Firefox La ventana que se desplega a continuación en la Figura 14, nos muestra los certificados que se tienen, y a su vez, nos permite importar uno. Pág. 17 de 18
Para importarlo, presionamos el botón importar, y seleccionamos uno. Pág. 18 de 18