StartSSL es la empresa que más baratos ofrece los certificados SSL en toda la red. Es más, son gratuitos si simplemente quieres un certificado SSL/HTTPS nivel 1 para un sitio web simple (como un blog o foro). Por cierto, aunque esto parezca un anuncio de la empresa, no lo es, o sí, pero vamos, que lo escribo porque me ha parecido que os puede interesar conocer la empresa y sobretodo ver cómo se instalan sus certificados, puesto que el interfaz de la aplicación es simplemente infumable. Dicho esto, añadiré que todo lo que voy a exponer está basado en mi propia experiencia de cliente (de pago) desde hace 2 años y que mis opiniones pueden no coincidir con las de la empresa y que quizás algún procedimiento haya cambiado cuando tu leas esto e intentes reproducirlo. Por supuesto, no me hago responsable de nada de lo que te ocurra a ti o al servidor.
Crear una cuenta en StartSSL
Para empezar debes crearte una cuenta. Eso sí, ni se te ocurra hacerlo en Chrome que no les funciona la web en este navegador. Yo lo he hecho con Firefox y va bien. Otra cosa importante es que te va a instalar un certificado en el navegador para acceder a la aplicación, por lo que te recomiendo que no hagas «pruebas chorra».
El proceso de creación de una cuenta es más o menos el típico de cualquier sitio de Internet. Una vez superado estarás dentro de la aplicación y podrás generarte todos los certificados de clase 1 para sitios web que desees. El problema de estos certificados individuales gratuitos es que solo ofrecen validez por un año y no permiten wildcards (asteriscos), es decir, no admiten múltiples subdominios. Por ejemplo si tienes una web principal www.myweb.com y tienes también un subdominio para un blog tipo blog.myweb.com, con un único certificado de clase 1 no podrías abarcarlo todo, tendrías que generarte dos certificados, lo cual no es un problema en este caso, pero si tienes un sitio como wordpress.com que ofrece un subdominio a cada usuario sí tienes un problema.
En mi caso solo estaba interesado por el certificado de clase 2, así que no sé si este paso que voy a contar ahora es necesario o no para conseguir también un certificado de clase 1 (pero creo que NO). Obviamente, para poder conseguir el certificado de clase 2 o superior lo que sí que hay que hacer es pasar por taquilla, en concreto, hay que ir a la «Tool box» y añadir una tarjeta de crédito («Add Credit Card | PayPal | Ticket«).
Validación de la identidad personal
Este paso es el que asegura que tu eres tu y no eres un juanker que quiere hacer un ataque a un sitio web. El procedimiento es muy sencillo. Tienes que ir a la pestaña «Validation wizards» y seleccionar una validación del tipo «Personal Identity Validation«. ¿Que pasará ahí? Que tendrás que escanear y enviar por correo electrónico un par de documentos con foto para que ellos comprueben que tu eres tu. Yo escaneé el pasaporte y mi DNI. El interfaz, como ya he dicho, es una puta mierda y te va a hacer que subas las imágenes de una en una, con un límite máximo de tamaño, etc. Un suplicio, pero al final lo conseguirás y… te llamará un tío por teléfono (en inglés, of course) para preguntarte una serie de tonterías para ver si coinciden con los datos que él tiene (que le acabas de enviar ¿¡?).
Esta llamada te va a costar 59’90$, pues es por lo único que esta empresa te va a cobrar. A partir de ahí puedes generar todos los certificados SSL (clase 1 y 2) que te dé la gana sin pagar nada. Eso sí, esta validación de identidad personal se tendrá que hacer cada año, es decir, cada año tendrás que volver a enviar los documentos, charlar un rato con el amigo de StartSSL y pasar por caja. Como te olvides de hacerlo no podrás acceder a tu cuenta, por lo que no podrás renovar certificados, no podrás generar nuevos y vamos, que serás un paria de la tierra de los SSL. Debo confesar que a mi me pasó este año, se me olvidó renovar a tiempo y estuve unos días sin poder acceder para renovar un certificado que me caducaba, pero vía email conseguí que el tipo del otro lado, el que te llama, hiciera una copia del registro de la base de datos a otra cuenta que me acaba de abrir para seguir manteniendo mis usuarios (una historia!!).
Validación del servidor
La validación de un servidor es un proceso muy sencillo. Sirve para que una vez ellos saben que tú eres tú, ahora confirmen que ese servidor que dices que es tuyo sea realmente tuyo. Para ello simplemente entras en el «Validations Wizard» y solicitas la validación de un servidor. Te pedirán que elijas una de las direcciones de email típicas de los servidores (las que empiezan por webmaster@servidor.com, etc) o la que tengas puesta en los registros de tu DNS. Por eso, si no tienes email en ese dominio, es muy importante que pongas una dirección a la que tengas acceso en tus DNS. Te enviarán un email con un código y tendrás que copiarlo y pegarlo para poder continuar. Fácil, fácil, este paso no es de los que molesta.
Ah, por cierto, las validaciones duran 30 días, lo cual significa que si en 30 días no has solicitado el certificado tendrás que volver a validar el dominio. Puedes validar tantos dominios como quieras.
Un nuevo certificado clase 2
Igual que la validación de los usuarios, los certificados también caducan. Los de clase 1 caducan cada año, por lo que tienes que ir y renovarlos todos los años. Los de clase 2 aguantan un año más, por lo que tienes un poco menos de trabajo. En cualquier caso, el proceso de creación o renovación siempre es el mismo.
Una vez identificado, te vas a tu cuenta y entras en la pestaña «Certificates Wizard«. Ahí eliges como target el «Web Server SSL/TLS certificate«. Te contará no se qué historias de si has generado tu mismo la key y el CSR, pero ignóralo, elige una buena contraseña y cambia los dos selectores para subir a tope la seguridad (total, cuesta lo mismo).
Tarda un poquito, pero al final te aparece una pantalla toda cutre con un área de texto que tienes que copiar y pegar en un editor de texto. Cutre a más no poder, pero efectivo. Guardas este fichero como ssl.key en un lugar seguro y luego te vas con una consola al directorio dónde lo hayas guardado y ejecutas:
openssl rsa -in ssl.key -out ssl.key
Perfecto, con esto tienes la key desencriptada. En el siguiente paso, tendrás que elegir el dominio validado (en los últimos 30 días) para el que quieras conseguir el certificado. Y luego viene el paso dónde eliges los subdominios que quieres añadir. Por ejemplo si tienes un dominio tipo example.com que puede funcionar así o con las www delante, tendrás que generar dos certificados diferentes o simplemente poner un * detrás de donde pone HTTPS://. Además puedes liarte a poner certificados adicionales. Yo que sé, si tienes por ejemplo 15 webs y quieres un certificado que valga para todas ellas, si primero las has validado, en este paso puedes ponerlas todas y van todas con el mismo certificado.
Al final, igual que en el paso anterior, terminas teniendo un churro que debes copiar y pegar. Este churro lo guardas como ssl.crt al ladito del ssl.key de antes. Además tienes que usar el botón derecho y hacer un «Guardar como..» de dos ficheros más. Estos dos últimos ficheros son los de la Autoridad Certificadora, es decir, son ficheros propios de StartSSL, por lo que solo te los tienes que bajar una vez (son iguales para cualquier certificado dominio). Luego le das a Finish y el proceso termina. Resumiendo: al final tienes que tener 4 ficheros. Ya puedes cerrar el StartSSL y olvidarte hasta dentro de un año (que alivio, ¿verdad?).
Instalar los certificados en el servidor
El proceso de instalación en el servidor varia mucho de un tipo de servidor a otro. A mi los servidores basados en Windows me dan bastante repelús, por lo que jamás lo he intentado, pero en un Linux con Apache es bastante sencillo… normalmente. Yo os cuento lo que yo hago y si a alguien le sirve, pues perfecto. NOTA: mi servidor es un Linux Gentoo alojado en OVH (pero no recuerdo ni la versión ni nada). Y para los perspicaces, no, no elegí yo la distribución Linux que lleva, es la que llevaba y no se la cambié por pereza (y urgencia).
Lo primero es copiar los 4 ficheros al servidor. En mi caso he colocado los dos ficheros .pem del CA en el directorio /etc/httpd/ca/, el fichero .key ha ido a parar al directorio /etc/httpd/ssl.key/ y el fichero .crt a /etc/httpd/ssl.crt/. Obviamente, si tienes otros certificados ahí dentro que se llaman ssl.key y ssl.crt tienes que renombrar los nuevos.
Y en principio ya está, solo queda añadir a Apache las reglas para indicar que tienes un nuevo y flamante servidor HTTPS. Para ello, en mi versión de Apache, simplemente hay que añadir una nueva entrada en el fichero /etc/httpd/ssl.conf tal que así:
<VirtualHost sub.domain.com:443>
ServerAdmin your@email.com
DocumentRoot /var/www/path/service
Servername sub.domain.com
ErrorLog /usr/local/apache/logs/error_log
TransferLog /usr/local/apache/logs/access_log
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/httpd/ssl.crt/ssl.crt
SSLCertificateKeyFile /etc/httpd/ssl.key/ssl.key
SSLCertificateChainFile /etc/httpd/ca/sub.class2.server.ca.pem
SSLCACertificateFile /etc/httpd/ca/ca.pem
SetEnvIf User-Agent ".*MSI