En artículos anteriores expliqué cómo crear tu propia autoridad certificante para generar certificados SSL autofirmados y cómo configurar HTTPS en Apache para acceder a un sitio Web de forma segura. También expliqué cómo autenticar usuarios MySQL utilizando SSL.

La seguridad que ofrece SSL es muy buena y todo es color de rosas hasta que llega el momento de adquirir un certificado. Debido a que un certificado debe ser emitido (firmado) por una autoridad certificante de confianza, hay un costo a pagar, y generalmente es elevado. Por ejemplo una de las entidades certificantes más conocidas ofrece certificados SSL para implementar HTTPS por la, nada despreciable, suma de 70 dólares al año.

Gracias a uno de mis patrocinadores, conocí a la entidad certificante StartSSL, la cual ofrece certificados SSL de manera gratuita, sí, gratis!

Es por ello que me puse inmediatamente a tramitar mi certificado SSL para implementar HTTPS en mi blog. Esta vez firmado por una entidad de confianza, en vez de mi propia CA autofirmada.

Actualización (24/3/2016): desde fines de 2015 es posible obtener un certificado SSL gratuito gracias al proyecto Let's Encrypt. Let's Encrypt es una nueva autoridad certificante libre, abierta, automática y gratuita patrocinada por la Linux Foundation. El proceso de creación y renovación de certificados con Let's Encrypt es mucho más simple y rápido que con StartSSL, por lo que recomiendo dirigirse al siguiente artículo: Cómo obtener un certificado SSL gratis de Let's Encrypt.

Actualización (19/8/2016): StartSSL se ha renovado lanzando StartEncrypt, un servicio mucho más flexible, simple y fácil de utilizar. Acceder al artículo Obtener un certificado TLS gratis con StartEncrypt para obtener un certificado SSL/TLS de manera mucho más rápida y simple.



El protocolo HTTPS es una versión segura del protocolo HTTP que implementa un canal de comunicación basado en SSL (Secure Socket Layer) entre el navegador cliente y el servidor HTTP el cual provee autenticidad (mediante certificados) y privacidad (mediante encriptación).

En este tutorial voy a explicar paso a paso como tramitar un certificado SSL (para implementar HTTPS en tu sitio Web/blog) de manera totalmente gratuita desde StartSSL. Como "bonus track" voy a explicar cómo instalar el certificado en un panel de control CPanel, para habilitar HTTPS en nuestro sitio/blog. Es necesario disponer de un sistema con GNU/Linux con openssl instalado para manipular las claves y certificados antes de subirlas al servidor Web o CPanel.

Alta en StartSSL

El primer paso consiste en registrarse en startssl.com. Acceder desde el banner "Sign-up For Free". Si el sitio está sobrecargado (responde "Over Capacity") tener paciencia y probar en unos minutos. Completar el formulario de registro con información precisa:

Continuar y confirmar:

Inmediatamente recibimos un correo electrónico con un código de autenticación:

Copiar y pegar el código en el siguiente formulario:

Continuar y esperar el siguiente mensaje de correo electrónico. Puede demorar ya que el requerimiento debe ser aprobado:

Una vez aprobado, copiar el código recibido por correo y pegarlo en el formulario accediendo al enlace provisto en el cuerpo del mismo mensaje:

El siguiente paso consiste en generar una clave privada para autenticarse como cliente en el navegador Web:

Generar la clave e instalar el certificado cliente en el browser (en este ejemplo se trata de Google Chrome):

Luego de instalar el certificado, el browser indica que se ha agregado de forma exitosa. Antes de presionar siguiente es importante descargar y guardar una copia de respaldo del certificado cliente, ya que si se pierde no será posible acceder nuevamente a la cuenta.

Si se presiona el botón View en Google Chrome es posible ver los detalles del certificado cliente instalado, se observa que ha sido emitido por la entidad "StartCom Ltd.":

Al finalizar llega un mensaje de correo electrónico adicional indicado que la cuenta ha sido creada con éxito:

Validar una cuenta de correo electrónico

Luego de obtener el certificado cliente se debe validar una cuenta de correo electrónico para el dominio deseado, acceder a "Validations Wizard":

Seleccionar "Domain Name Validation":

Especificar un dominio válido:

Seleccionar una cuenta de correo. El sistema sólo permite validar las cuentas postmaster, hostmaster o webmaster. Es necesario tener acceso a alguna de las cuentas anteriores, porque es a donde se enviará la clave de validación.

El siguiente correo se recibe en la cuenta seleccionada en el paso anterior, copiar el código de verificación y pegarlo en el siguiente formulario:

Continuar.

Se ha verificado con éxito. Finalizar.

Crear un certificado SSL

Luego de validar el dominio es posible crear un certificado. Acceder a "Certificates Wizard":

Seleccionar el tipo de certificado. Para implementar HTTPS seleccionar "Web Server SSLT/TLS Certificate":

Generar la clave privada. Es necesario especificar una passphrase fuerte:

Es importante no olvidar la contraseña.

Copiar la clave privada encriptada y guardarla en un archivo de texto plano (utilizar nano, Gedit, Kate o algún editor similar) con el nombre ssl.key, en un directorio seguro. Para utilizar en un servidor Web es necesario desencriptar la clave privada mediante la herramienta openssl:

$ cp ssl.key ssl.key.org
$ openssl rsa -in ssl.key.org -out ssl.key
Enter pass phrase for ssl.key.org:
writing RSA key

A continuación, especificar el dominio para el certificado:

Luego especificar un subdominio (por ejemplo www):

Continuar.

Copiar el certificado y guardarlo en un archivo de texto plano (utilizar nano, Gedit, Kate o algún editor similar) con el nombre ssl.crt, en un directorio seguro.

Antes de finalizar, es necesario descargar los certificados de la CA intermedia y de la CA root desde los enlaces provistos.

A esta altura es posible utilizar el certificado ssl.crt para implementar HTTPS en el sitio Web especificado (en este ejemplo "www.linuxito.com"). Pero, antes de continuar, es posible verificar el certificado para asegurarse que funcione utilizando la herramienta openssl

$ cat sub.class1.server.ca.pem ca.pem > chain.pem
$ openssl verify -verbose -purpose sslserver -CAfile chain.pem ssl.crt
ssl.crt: OK

Tal como se observa, primero se debe crear la "cadena" de certificados utilizando el comando cat, para luego poder verificar el certificado ssl.crt.

En caso de tratarse de un servidor Web propio, el artículo cómo configurar HTTPS en Apache explica cómo instalar el certificado en un servidor Apache. En la siguiente sección se detallan los pasos para instalar el certificado en un panel de control CPanel.

Instalar el certificado SSL en CPanel

Si el dominio está alojado en un servidor que posee CPanel, la instalación del certificado es muy sencilla. Acceder al menú "Administración de SSL/TLS":

Luego acceder al menú "Manage SSL sites":

Seleccionar el dominio y luego pegar el contenido del certificado, la clave privada, y la cadena de autoridad de certificación(BUNDLE). Es necesario concatenar la cadena de autoridad de certificación y desencriptar la clave privada utilizando openssl tal como se explicó en pasos anteriores:

Presionar el botón "Instalar Certificado":

El certificado se ha instalado con éxito:

Verificar la autenticidad del sitio Web

Habiendo instalado el certificado SSL, acceder al sitio Web anteponiendo "https" en la URL: https://www.linuxito.com/. Al presionar el icono del candado a la izquierda del la URL, se puede verificar la autenticidad del sitio Web:

Detalle del certificado:

Acceder a los siguientes enlaces si se necesita configurar HTTPS en Apache sobre sistemas CentOS o configurar HTTPS en Apache sobre sistemas Debian/Devuan.


Tal vez pueda interesarte



Compartí este artículo y dejá tu comentario