¿Qué es?
Es un documento digital mediante el cual un tercero (AC [Autoridad Certificadora, por ejemplo Verisign]) garantiza la vinculación entre la identidad de un ente y su llave pública.
Si citamos un ejemplo de la vida real, podemos tomar el del "certificado de estudios", en el que un tercero (SEP), garantiza que cierta persona ha cubierto cierto nivel de estudios.
Otro ejemplo sería la credencial de elector, el IFE es el tercero que garantiza la identidad (entre otras cosas) de la persona a la cual se la expidió.
¿Cómo se hace?
Un certificado principalmente se compone de 3 partes:
1.- Llave privada
2.- CSR (Certificate Sign Request - Requerimiento de Firma de Certificado)
3.- CRT (Certificado como tal)
Cabe recalcar que el paso número 3, corre a cuenta de la AC (Autoridad Certificadora), aunque también podemos hacer un certificado "autofirmado"; es decir, que acudimos con un tercero para la certificación, sino que lo hacemos nosotros mismos.
Para efectos de éste artículo, se realizará un certificado con OpenSSl para apache.
A continuación escribiremos los comandos necesarios para la generación del certificado, tomando en cuenta que el dominio para el cual generaremos el certificado es: www.seguridad.com
1.- Llave privada
Teclear en la cosola de Linux/Unix:
a.- Generar archivos con datos aleatorios
$ cat /dev/urandom > rand1.dat
$ cat /dev/urandom > rand2.dat
$ cat /dev/urandom > rand3.dat
b.- Generar llave privada
$ openssl genrsa –rand rand1.dat:rand2.dat:rand3.dat \
-out www.seguridadhost.com.key
2.- CSR (Certificate Sign Request - Requerimiento de Firma de Certificado)
$ openssl req –new –key www.seguridadhost.com.key \
-out www.seguridad.com.csr
3.- CRT (Certificado como tal)
Si el certificado no es autofirmado se recurre a la AC (Autoridad Certificadora), por ejemplo Verisign para generar el certificado.
Si el certificado es autofirmado, hacemos lo siguiente:
$ openssl x509 –req –days 365 \
–in www.seguridadhost.com.csr
-signkey www.seguridadhost.com.key \
-out www.seguridadhost.com.crt
¿Cómo se instala?
Como es un certificado, debe ser instalado bajo el protocolo 443 (https). Para ello tenemos que hacer los siguientes pasos:
1.- Descomentar la línea que tenga el módulo de ssl en el archivo httpd.conf, sino existiera esta línea seguramente es porque no está instalado el módulo ssl.
LoadModule ssl_module lib/httpd/modules/mod_ssl.so
(Dependiendo del sistema operativo, la ruta del mod_ssl.so podría cambiar)
2.- En el archivo httpd.conf, hacer la referencia hacia el archivo que contendrá el hostvirtual de ssl.
En el httpd.conf existe una línea como esta:
#Include /etc/httpd/extra/httpd-ssl.conf
Aquí hay 2 opciones, descomentar esta línea y posteriormente editar el archivo httpd-ssl.conf (paso número 3).
3.- Editar el archivo /etc/httpd/extra/httpd-ssl.conf
Un ejemplo de lo que deberá contener el archivo para la edición del host virtual:
<VirtualHost *:443>
ServerAdmin hostmaster@seguridadhost.com
DocumentRoot /var/www/htdocs/vhost/www.seguridadhost.com
ServerName www.seguridadhost.com
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/log common
SSLEngine on
SSLCertificateFile /etc/ssl/certs/www.seguridadhost.com.crt
SSLCertificateKeyFile /etc/ssl/certs/www.seguridadhost.com.key
<Directory /var/www/htdocs/vhost/www.seguridadhost.com>
Options ExecCGI FollowSymLinks
AddHandler cgi-script .cgi
AllowOverride all
Allow from all
Order allow,deny
</Directory>
</VirtualHost>
Las 3 líneas importantes que se tienen que considerar con las que están en negritas:
<VirtualHost *:443>
Se define el host virtual
SSLCertificateFile /etc/ssl/certs/www.seguridadhost.com.crt
Se hace la referencia del certificado creado
SSLCertificateKeyFile /etc/ssl/certs/www.seguridadhost.com.key
Se hace la referencia de la llave creada
4.- Por último se tendrá que reiniciar el servicio de apache.
apachectl stop
apachectl start-ssl
Cabe aclarar que en algunas distribuciones start-ssl es igual a start
Buen artículo master, lo pondré en marcha y ya te comentaré como me fue
ResponderEliminarmuy buena pauta.
ResponderEliminarGracias.