Apache SSL y mod_jk
Introducción
Veremos como conectar Apache y Tomcat con soporte para SSL. La configuración de esta versión esta realizada sobre Apache 2 y Tomcat 6 pero seria igualmente para Apache 2 y Tomcat 5.5.
Paquetes
Antes de nada deberemos instalar los paquetes necesarios para la configuración.
sudo aptitude install openssl libapache2-mod-jk
Apache
SSL y mod_jk
Activar modulo SSL para Apache y mod_jk para la conexión de Apache con Tomcat:
$ a2enmod ssl
$ a2enmod jk
Certificados
Creamos los certificados necesarios para la aplicación. Para ello podemos seguir los pasos del siguiente documento:
Una vez creados es necesario el copiarlos a donde corresponde, que en nuestro caso sera el siguiente:
$ sudo mv mysite.crt /etc/ssl/certs/mysite.crt
$ sudo mv mysite.key /etc/ssl/private/mysite.key
VirtualHost Apache
Configuración del fichero default
$ sudo nano /etc/apache2/sites-available/default
Y lo dejamos tal que así:
ServerName *
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
Sera necesario cambiar el /etc/apache2/ports.conf para añadir NameVirtualHost para el puerto 80.
Así:
NameVirtualHost *:80
Listen 80
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
NameVirtualHost *:443
Listen 443
Si es necesitamos modificar la configuración de https por defecto deberos modificar el siguiente fichero:
/etc/apache2/sites-available/default-ssl
Ya tenemos activado y configurado la parte base para https
Tomcat 6
Damos por echo que tenemos una instalación de tomcat corriendo en un directorio de nuestra maquina.
Estos son algunos parámetros que deberemos tener en cuenta en el fichero server.xml, casi siempre están así configurados:
Puerto del tomcat 8080:
Conector para mod_jk y su puerto 8009:
mod_jk
Configuración de mod_jk para que conecte el Apache con Tomcat.
$ sudo nano /etc/apache2/mods-available/jk.conf
Escribimos esta linea:
JkWorkersFile /etc/apache2/workers.properties
Activamos el modulo:
$ sudo a2enmod jk
Mirar si existe el enlace simbólico en etc/apache2/mods-enabled/jk.conf en caso de no existir:
$ sudo ln -s /etc/apache2/mods-available/jk.conf /etc/apache2/mods-enabled/jk.conf
Crear el fichero workers.properties.
$ sudo nano /etc/apache2/workers.properties
# Ruta del tomcat
workers.tomcat_home=/home/usuario/proyectos/liferay-portal-5.2.3/tomcat-6.0.18
# Ruta de java
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
Es necesario el configurar en el fichero hosts la linea que identifica el dominio con la IP, puede que esto se deba a que es un entorno de desarrollo.
$ sudo nano /etc/hosts
En nuestro caso:
192.168.1.20 www.mysite.es mysite.es
Dominio para Apache
Creamos y configuramos para nuestro dominio:
$ sudo nano /etc/apache2/sites-available/mysite
JkMount /* default
ServerAdmin admin@yourdomain.com
ServerName www.mysite.es
ServerAlias mysite.es
JkMount /* default
ServerAdmin admin@yourdomain.com
ServerName www.mysite.es
ServerAlias mysite.es
SSLEngine on
SSLCertificateFile /etc/ssl/certs/mysite.crt
SSLCertificateKeyFile /etc/ssl/private/mysite.key
Realizamos el enlace simbólico:
$ sudo ln -s /etc/apache2/sites-available/mysite /etc/apache2/sites-enabled/www.mysite.es
Reiniciamos para que coja los cambios:
$ sudo /etc/init.d/apache2 restart
Como se puede comprobar en el fichero hemos definido la aplicación a montar y donde y a su vez cuales serán los certificados:
Montaje, default lo hemos definido el workers.properties:
JkMount /* default
SSL:
SSLEngine on
SSLCertificateFile /etc/ssl/certs/mysite.crt
SSLCertificateKeyFile /etc/ssl/private/mysite.key
Observaciones
Es necesario simpre reiniciar primero el Tomcat y posteriormente Apache, para que coja bien las configuraciones.
En caso de no ser necesario la configuración de SSL (https) se pueden omitir esos paso así como no añadir las lineas correspondientes en Apache.
Referencias
Comentarios