martes, 18 de octubre de 2011

Apache2, SSL y autenticación con certificados p12 en el navegador

Manos a la obra !!!

Primero generamos la llave privada del servidor; en mi caso voy a crear una de 2048:

#openssl genrsa -des3 -out _x1nux.host.net.key 2048

Al generar dicha llave nos va a pedir un password, este password debe ser recordado por siempre, pues se va a usar para firmar los certificados hijos, y también para poder iniciar el servidor apache, en caso de que actualices algún tipo de configuración en el.

En caso de que quieras deshabilitar la pedida de password al reiniciar o iniciar el servicio de apache; usa el siguiente comando y utiliza el siguiente certificado para la configuración del apache:


#openssl rsa -in _x1nux.host.net.key -out _x1nux.host.net.pem

Pedirá un password que fue el que dimos al generar la llave principal.

Ahora generamos los archivos csr, en donde ingresaremos la información de nuestra empresa u de nuestro host.


#openssl req -new -key _x1nux.host.net.key -out _x1nux.host.net.csr

Nos pedirá la información siguiente:


----- Country Name (2 letter code) [AU]:CO

State or Province Name (full name) [Some-State]:Valle

Locality Name (eg, city) []:Cali

Organization Name (eg, company) Host

Organizational Unit Name (eg, section) []:HostCert

Common Name (eg, YOUR name) []:Host.net

Email Address []:x1nux@host.net
En caso de que pida password, das el que te pidió al generar la primera llave.


Ahora vamos a generar un certificado auto-firmado con 10 años de vigencia :

#openssl x509 -req -days 3650 -in _x1nux.host.net.csr -signkey _x1nux.host.net.key -out _x1nux.host.net.crt

Pedirá el password de la llave primaria: “El que debes recordar siempre”


Ahora generamos el certificado P12 el cual se va a configurar como el único que pueda acceder al servidor apache:


#openssl pkcs12 -export -out _x1nux.host.net.p12 -inkey _x1nux.host.net.key -in _x1nux.host.net.crt

Luego pedirá el password de la llave principal; y luego el password para proteger este mismo certificado P12.


NOTA: La persona que tenga este certificado, es el único que va poder acceder al sitio web; lo que quiere decir que el administrador del servidor web debe entregar este certificado a los usuarios que deseen acceder a el sitio web, para que lo agreguen al navegador; ademas el certificado puede ser protegido con un password adicional, que a la hora de ser agregado a un navegador, pida ese password.



Configurar apache para que trabaje con los certificados:

Editar el archivo donde tengan configurado el servicio de apache, en mi caso /etc/apache2/sites-enable/default-ssl

y modificar las lineas de ssl de la siguiente manera:


SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLVerifyClient require

SSLCertificateFile /etc/apache2/cert-apache2/x1nux/_x1nux.host.net.crt

SSLCACertificateFile /etc/apache2/cert-apache2/x1nux/_x1nux.host.net.crt

SSLCertificateKeyFile /etc/apache2/cert-apache2/x1nux/_x1nux.host.net.pem


Luego reiniciar el servicio de apache:


#/etc/init.d/apache2 restart



Pruebas:

Ingresar desde una maquina de la misma red, al servidor apache que acabamos de instalar; y veras que no tienes acceso, te imprimirá un error, o solo se quedara cargando sin entrar al sitio.

Luego hacer la prueba cogiendo el certificado .p12 y agregarlo en el navegador de una maquina de la misma red donde este el servidor apache que acabamos de configurar, e intentar logear. Y debe de ingresar al sitio.

Eso es todo; espero les sirva el manual.

1 comentario: