HTTPSGFS_logoGF.jpg


Glassfish Server con protocolo HTTPS


Introducción

GlassFish es un servidor de aplicaciones de software libre desarrollado por Sun Microsystems, compañía adquirida por Oracle Corporation, que implementa las tecnologías definidas en la plataforma Java EE y permite ejecutar aplicaciones que siguen esta especificación. Es gratuito, de código libre y se distribuye bajo un licenciamiento dual a través de la licencia CDDL y la GNU GPL. La versión comercial es denominada Oracle GlassFish Enterprise Server (antes Sun GlassFish Enterprise Server).
GlassFish está basado en el código fuente donado por Sun y Oracle Corporation; este último proporcionó el módulo de persistencia TopLink.1 GlassFish tiene como base al servidor Sun Java System Application Server de Oracle Corporation, un derivado de Apache Tomcat, y que usa un componente adicional llamado Grizzly que usa Java NIO para escalabilidad y velocidad.


Pasos previos

Java EE 7 requiere JDK 7 para usar algunas de las nuevas utilidades, para comprar si tienes el JDK 7 instalado(JDK, no solo JRE), escribe en la terminal:
javac -version


Para GlassFish 4, Oracle recomienda usar JDK 7 Build 21 (o superior) la cual puede ser descargada aquí.

Para descargar GlassFish entramos aquí, hay dos zips disponibles Java EE 7 Web Profile y Java EE 7 Full Platform, nosotros elegiremos el Web Profile, que corresponde a glassfish-4.1.1-web.zip, descomprimimos la carpeta, en mi caso lo haré en C:/GlassFish.



Preparar el servidor

Para comprobar que el servidor arranca correctamente vamos a la ruta C:\GlassFish\glassfish\bin y ejecutamos startserv.bat, si esperamos unos segundos y carga correctamente debe aparecer algo así:


HTTPSGFS_serv.jpg



Una vez llegados a este punto entramos en el navegador y probamos la url "http://localhost:4848/" y debe aparecer algo así:

HTTPSGFS_admin.jpg
Nota: Accediendo al panel desde un equipo remoto podemos encontrar problemas, ya que por defecto está desactivada dicha posibilidad.
Para activar SSL nos movemos por el menú de navegación y vamos a Configurations>server-config>http-listener2, activamos Status: Enabled en caso que no lo esté, fijamos el puerto (por defecto 8181) y vamos a la pestaña SSL, debe quedar algo así, muchos de los valores mostrados son por defecto, no olvides guardar:

HTTPSGFS_network.jpg


A continuación nos queda generar dichos archivos, los comandos son:
"C:\Program Files\Java\jre1.8.0_121\bin\keytool" -genkey -alias s1as -keyalg RSA -keypass changeit -storepass changeit -keystore keystore.jks
"C:\Program Files\Java\jre1.8.0_121\bin\keytool" -export -alias s1as -storepass changeit -file server.cer -keystore keystore.jks
"C:\Program Files\Java\jre1.8.0_121\bin\keytool" -import -v -trustcacerts -alias s1as -file server.cer -keystore cacerts.jks -keypass changeit -storepass changeit
(La ruta puede variar, es donde tengas keytool)

s1as: Certificate NickName especificado en la configuración antes mostrada, este es el valor por defecto, es posible que al cambiarlo haya que editar el archivo domain.xml en glassfish\domains\domain1\config
changeit: la contraseña admin de GlassFish por defecto, si las has cambiado debes cambiarla aquí también.
keystore.jks: archivo con el certificado de servidor.
cacerts.jks: archivo con el certificado de autoridad.

Los archivos keystore.jks y cacerts.jks los movemos a glassfish\domains\domain1\config y reiniciamos el servidor para asegurarnos que la configuración toma efecto, al acceder a una aplicación desplegada por HTTPS debe mostrarnos el certificado correctamente.

HTTPSGFS_Final.jpg