Certificado SSL de bajo costo con cPanel + Let’s Encrypt + acme.sh

La seguridad informática es una de las principales preocupaciones para el intercambio de servicios e información en la Internet, tanto para proveedores de servicios como para los usuarios.

¿Cómo asegurarnos de que el servidor de Internet con el que estamos interactuando es quien dice ser?

 ¿Cómo le demostramos a nuestros usuarios que nuestros servidores son nuestros?

Haz clic acá para ver una explicación

Dando un vistazo de 1000 metros al asunto podemos afirmar que la principal respuesta a estas preguntas yace en el uso del protocolo HTTPS y el consecuente uso de certificados SSL en los servidores. Esto consiste en registrarse como propietario de un dominio de internet ante una entidad autorizada (denominada también Certificate Authority (CA)); quienes en resumen sirven como testigos de que tu sitio web te pertenece; y esto se comprueba mediante el uso de certificados (un tipo especial de archivo) que contiene información cifrada que solamente estos CA’s pueden comprobar y que permite establecer conexiones cifradas de tipo cliente-servidor entre los navegadores de Internet y los servidores de Internet. Es el mecanismo fundamental que utilizan bancos, hospitales, gobierno y comercio en general.

Let’s Encrypt es un servicio gratuito con autoridad de certificados. Esto permite generar certificados para autenticar nuestros servidores en Internet durante un periodo de 3 meses; luego de los cuales los certificados deben ser renovados.

Let’s Encrypt utiliza un protocolo denominado ACME que permite verificar la tenencia de un dominio antes de emitir un certificado.


En esta publicación haremos una breve reseña y tutorial de cómo habilitar una cuenta de tipo cpanel (como las proveidas por Godaddy) para manejar certificados SSL gratuitos usando Let’s Encrypt (uno de los principales proveedores de certificados de la Industria).

En Resumen

La siguiente lista describe en resumen lo que hay que hacer. Más adelante en este artículo detallamos cada paso.

  1. Obtenga acceso SSH a su servidor
  2. Mediante SSH, instale acme.sh en su servidor
  3. Obtenga un API KEY de GoDaddy
  4. Genere y Configure su Certificado con acme.sh
  5. Verifique la auto-renovación
  6. Configure la redirección de HTTP a HTTPS
  7. Repita para los sub-dominios

Documentación y enlaces de Referencia


Paso 1 – Obtenga acceso SSH a su dominio

SSH es el protocolo de comunicación para Shell (linea de comandos ) segura que se usa para la administración de servidores y dispositivos en red.

En el caso de una cuenta compartida de GoDaddy con cPanel, es cuestión de acceder a cPanel y visitar la sección Security > SSH Access; y allí acceder a “Manage SSH Keys”.

Esta sección de cPanel permite registrar o generar llaves de cifrado de las comunicaciones de forma que un dispositivo pueda conectarse con su servidor de forma cifrada con SSH.

Las llaves SSH se pueden generar con utilidades para PC como PuttyGen o por medio de cPanel directamente. Para generar una nueva llave usando cPanel se necesita un nombre, una contraseña y seleccionar RSA como el tipo y 2048 como el tamaño mínimo de la llave.

Una vez generada la llave, se encontrarán dos entradas para esta: la llave pública y la llave privada.

Para usar una terminal tipo puTTY, el dispositivo necesitará la llave privada que se generó, pero en formato PPK. Para esto es necesario utilizar la un “passphrase” en la sección “Convert the xyz key to PPK Format”. Una vez generada la llave PPK hacemos clic en Download Key.

Luego utilizaremos puTTY (o su programa favorito de terminal) para configurar una conexion SSH (Secure Shell) al dominio que estamos tratando de administrar a través del puerto 22, y configuramos la sesión para utilizar la llave PPK que acabamos de generar/convertir/descargar.


Paso 2 – Instale acme.sh en su servidor

(!) Este paso solo necesita realizarse una vez.

Al ejecutar el siguiente comando en su servidor usando SSH se descarga ACME.sh y se instala.

curl https://get.acme.sh | sh

Paso 3 – Obtenga un API Key de Go Daddy

(!) Este paso solo necesita ser realizado una vez.
  1. Visite el sitio https://developer.godaddy.com/keys/
  2. Allí, genere un “production key”
  3. En la terminal SSH, ejecute los siguientes comandos para configurar esa llave en su servidor. Cambie “…” con el contenido de sus llaves.
    1. export GD_Secret=…
    2. export GD_Key=…
  4. Reinicie la terminal SSH para cargar la configuración de forma predeterminada.

Paso 4 – Genere y configure el certificado

(!) Este paso necesita ser realizado una vez por cada dominio o sub-dominio que deseas configurar.

Al ejecutar el siguiente comando en su terminal SSH, se activará el protocolo ACME para generar su certificado.

Reemplace MYDOMAIN.com y www.MYDOMAIN.COM con su nombre de dominio (o sub dominio).

Reemplace ~/www con la dirección de disco donde se hospedan sus archivos de dominio. Para el dominio principal suele ser simplemente ~/www pero para subdominios suele ser una carpeta dentro de ~/www como por ejemplo ~/www/misubdominio.

acme.sh --issue -d MYDOMAIN.com -d www.MYDOMAIN.com -w ~/www --dns dns_gd 

Paso 3.1 – Configure el certificado generado en su servicio GoDaddy.

(!) Este paso necesita ser realizado una vez por cada dominio o sub-dominio que deseas configurar.
  1. En su sistema de archivos de cpanel verifique que el archivo
    ~/.acme.sh/deploy/cpanel_uapi.sh tiene descomentada la variable
    export DEPLOY_CPANEL_USER = y que está configurada con su ID de usuario.
  2. Ejecute el siguiente comando desde su terminal SSH para instalar el certificado en GoDaddy por medio del API de GoDaddy. Recuerde que MYDOMAIN.com debe ser igual al dominio o sub-dominio que desea configurar.
 acme.sh --deploy -d MYDOMAIN.com --deploy-hook cpanel_uapi 

LISTO! EN ESTE PUNTO YA TENEMOS:

  1. Certificado Generado con el respaldo de LetsEncrypt
  2. Certificado Instalado en GoDaddy
  3. Auto-renovación configurada.

Paso 5 – Verifique la auto-renovación

Puede ejecutar el siguiente comando en su terminal SSH para ver la configuración CRON. Esta también está disponible en CPanel.

crontab -l

Paso 6 – Redirección HTTP > HTTPS Automática

(!) Este paso necesita ser realizado solamente una vez.

Revise su archivo .htaccess para que automáticamente se direccionen las llamadas HTTP a HTTPS.

# BEGIN WordPress
<IfModule mod_rewrite.c>  
RewriteEngine On
RewriteCond %{HTTPS} off  
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Paso 7 – Consideraciones para sub-dominios

Probamos este tutorial con algunos subdominios y funciona correctamente.

Un detalle importante es que si algun dominio o sub dominio está protegido con usuarios/contraseñas mediante .htaccess, esto impedirá al protocolo ACME verificar la propiedad del dominio. Lo que hicimos fue deshabilitar las reglas .htaccess durante el proceso de generación del certificado (aproximadamente 1 minuto) y funcionó bien.

156 total views, 1 views today

9Shares

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.