En este post voy a detallar como crear un certificado SSL en Ubuntu Server, como enviarlo a una entidad certificadora y como configurar servidor virtual en Apache con el certificado firmado.
Lo primero que tenemos que hacer si no lo tenemos ya habilitado, es habilitar el módulo SSL en Ubuntu Server. Esto se hace facilmente ejecutando en un terminal el siguiente comando:
sudo a2enmod ssl
Reinicia el servidor para que los cambios tengan efecto:
sudo /etc/init.d/apache2 restart
Ahora toca crear nuestro certificado digital. Para ello y valiéndonos de la estupenda herramienta openssl que viene instalada en Ubuntu Server, nos creamos nuestra clave RSA de 2048 Bit:
openssl genrsa -out elnombrequequieras.key 2048
Ahora generamos la solicitud del certficado CSR para luego mandarla a una entidad certificadora:
openssl req -new -key tukeygenerada.key -out elnombrequequieras.csr
Aquí hay que tener un poco de cuidado al cumplimentar los datos de la solicitud del certificado si luego lo queremos enviar a una entidad certificadora.
Aquí teneis un ejemplo:
Country name: ES (es el codigo del pais de dos dígitos)
State or province: Alicante (nombre completo)
Locality Name: Torrevieja (nombre completo)
Organization name: (el nombre de tu organización)
Organizational Unit name: (lo mismo que antes)
Common name: www.tuweb.com (Es el nombre de de tu web donde se va a instalar el certificado. Muy importante este campo para la validación de la entidad certificadora)
Email Address: Tu email (muy importante este campo para la validación de la entidad certificadora)
Una vez hecho esto tienes 2 posibilidades. Mandar el certificado que has creado a una entidad certificadora o firmarlo tu mismo. La ventaja de mandarlo a una entidad certificadora es que no sale la pantalla de aviso de conexion no verificada, que puede espantar a un visitante no experto:
Si no quieres gastar dinero puedes firmarlo tu mismo con el siguiente comando:
openssl x509 -req -days 365 -in tusolicitudgenerada.csr -signkey tukeygenerada.key -out tucertificado.crt
En mi caso busqué una entidad certificadora que fuese lo mas compatible posible con todos los navegadores web y que a la vez sea muy barata. Aquí hay de todo y de muchos precios y caracteristicas, las mas famosas son Verisign o Truste. En mi caso vi una super barata aquí por unos 5 euros al año que para lo que yo quiero me sobra:
http://www.dondominio.com/products/ssl/comodo-positive-ssl/
El proceso fue muy rápido y sencillo y el mismo dia me enviaron por email el certificado firmado y el certificado con la entidad intermediara. Es decir un fichero .crt y otro .ca-crt
Ahora ya solo queda copiar la clave y los certificados firmados a sus directorios correspondientes en el servidor y configurar un servidor virtual en Apache para que atienda las peticiones https y cifre las conexiones a la página.
Aquí tenes los comandos para copiar la clave y certificado en sus directorios corresponedientes del servidor y establecer los permisos en Ubuntu Server:
sudo mv tukeygenerada.key /etc/ssl/private sudo mv tucertificadofirmado.crt /etc/ssl/certs/ sudo mv tucertificadofirmadointermediario.ca-crt /etc/ssl/certs/ sudo chown root:ssl-cert /etc/ssl/private/tukeygenerada.key sudo chmod 640 /etc/ssl/private/tukeygenerada.key sudo chown root:root /etc/ssl/certs/tucertificadofirmadointermediario.ca-crt
Aqui tenéis un ejemplo de configuración de servidor virtual en Apache:
<VirtualHost *:80> ServerName www.tuweb.com RewriteEngine on ReWriteCond %{SERVER_PORT} !^443$ RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [NC,R,L] </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName www.tuweb.com DocumentRoot /var/www <Directory /var/www> DirectoryIndex index.php Options FollowSymLinks Multiviews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/tuweb.error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/tuweb.access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/tucertificadofirmado.crt SSLCertificateKeyFile /etc/ssl/private/tukey.key SSLCertificateChainFile /etc/ssl/crt/tucertificadofirmadointermediario.ca-crt </VirtualHost> </IfModule>
Una vez reiniciado Apache puedes comprobar que el certificado esta configurado correctamente desde esta página:
http://www.sslshopper.com/ssl-checker.html
Otro punto importante es que si quieres tener multiples certificados SSL corriendo en un mismo servidor que atiende diferentes dominios con un única IP, se necesita añadir esta linea en el fichero de configuracion de Apache.
Es decir editas este fichero:
sudo vi /etc/apache2/ports.conf
Y añadir esta linea:
NameVirtualHost *:443
Deja una respuesta