domingo, 5 de septiembre de 2010

Certificados en Apache: https

Carpetas seguras con certificados

Una página o web segura es aquella que emplea el protocolo https en lugar de emplear http. Con ello nos aseguramos de que la información viaja encriptada y sólo podrá ser descifrada por el emisor del certificado.

1.- Generación del certificado

Al instalar apache2 se instala también el módulo ssl, tan sólo debemos generar el certificado para nuestro servidor y activar el módulo ssl.
Podremos emplear el cerficado que por defecto viene con apache2 autofirmado o generar uno nuevo.

En mi caso voy a generar uno nuevo empleando el common name websegura.mczones.es ya que es el dominio cuya información quiero encriptar. Para ello ejecutaré el comando:
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/certs/websegura.pem
probablemente preguntará -en caso de no haber configurado el fichero ssh.cnf previamente- algunos datos sobre el país, servidor,...

2.- Configurando el servidor para emplear certificados

El protocolo https emplea el puerto 443, por lo que lo primero que debemos hacer es habilitarlo, para ello vamos al fichero /etc/apache2/ports.conf y nos aseguramos de que la línea del puerto 443 no esté comentada:
<IfModule mod_ssl.c>
Listen 443
</IfModule>

En mi caso voy a emplear el sitio creado previamente websegura.mczones.es por lo que emplearé su fichero de configuración /etc/apache2/sites-available/websegura, en el fichero habilitaremos SSL, le diremos que debe escuchar en el puerto 443 y configuraremos la ruta hacia el certificado así como el resto de parámetros. Dicho fichero en mi caso contendrá (en rojo la parte modificada):
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName websegura.mczones.es
ServerAlias websegura.es
DirectoryIndex index.html
DocumentRoot /var/www/websegura
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/websegura>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
SSLRequireSSL
</Directory>
<Location />
AuthBasicProvider ldap
AuthType Basic
AuthzLDAPAuthoritative On
AuthName "Identificacion websegura.mczones.es"
AuthLDAPURL "ldap://127.0.0.1:389/ou=usuarios,dc=mczones,dc=es?uid?one"
AuthLDAPBindDN "cn=admin,dc=mczones,dc=es"
AuthLDAPBindPassword "ldapadmin"
Require valid-user
SSLRequireSSL #obligamos al uso de https
</Location>
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/ssl/certs/websegura.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
Habilitamos el módulo ssl del servidor apache:
a2enmod ssl
Habilitamos el sitio websegura:
a2ensite websegura

Reiniciamos el servidor apache:
/etc/init.d/apache2 restart
Recordar que debemos tener acceso al equipo websegura.mczones.es, debe estar incluido en el fichero de DNS o bien en el fichero /etc/hosts.

3.- Probando el acceso

Para usar este sitio hemos añadido ya una línea al servidor de DNS o al fichero hosts indicando la ip de websegura.mczones.es y nos conectamos desde un navegador web a la dirección: https://websegura.mczones.es, nos aparecerá una ventana advirtiéndonos de que el certificado no está emitido por una entidad certificadora – CA – de confianza:image
Pulsamos en O puede añadir una excepción → Obtener certificado:image
Si pulsamos en ver certificado:image
Cuando entremos ahora en la página nos pedirá nuevamente la clave, pero empleando el protocolo https, con lo que los datos viajarán encriptados:image
Finalmente tras entrar con un usuario y contraseña válida nos mostrará la página inicial:image
para continuar viendo el resto de manuales Linux siga el enlace:administración de servidores con Linux
En la siguiente entrega explicaré como emplear apache con certificados y webdav

4.- . Enlaces

No hay comentarios: