Instalar certificado de Let’s Encrypt en cuenta de GoDaddy

Desde hace poco más de año y medio, varios navegadores decidieron fomentar el uso de comunicación encriptada. Por esta razón, cuando accedes una página que no usa https, tu navegador muestra una alerta de seguridad.

Aunque es discutible si esta política da un falsa sensación de seguridad, si queremos que nuestro sitio web sea accesible hay que conseguir un certificado y configurarlo correctamente.

Por suerte la iniciativa Let’s Encrypt permite obtener un certificado gratis y usarlo en tu sitio web. Este post explica cómo obtener un certificado de Let’s Encrypt, para luego configurarlo y que funcione con el servicio de alojamiento de GoDaddy.

Obtener el cliente de cerbot

Para facilitar el proceso usaremos cerbot, un script que permite automatizar varias cosas, dependiendo del servicio de alojamiento que uses. Este proceso asume que tu computadora personal corre Linux o algún otro sistema tipo Unix.

  1. Verifica si la carpeta bin existe en directorio personal. Si no es el caso, crea dicha carpeta, luego abre una terminal y cambia tu directorio hacia esa carpeta:

    cd $HOME/bin
    
  2. Descarga el script:

    wget https://dl.eff.org/certbot-auto
    
  3. Dale permisos de ejecución:

    chmod a+x cerbot-auto
    
  4. Regresa a tu directorio personal

    cd $HOME
    

Generar los certificados

Ya que tenemos el script listo para usar, vamos a generar los certificados. Abre una segunda terminal, ya sea en una nueva ventana, nueva pestaña o nuevo panel de Tmux. Por simplicidad, las nombraremos terminal 1 y terminal 2, en el orden cronológico en que las creamos.

  1. En la terminal 1, ejecuta el siguiente comando para iniciar el proceso de creación de tu certificado SSL:

    certbot-auto certonly --manual
    

    Ingresa tu contraseña de administrador cuando te lo pida, luego presiona Enter para continuar.

  2. Ingresa tus nombres de dominio separados por comas o espacios. En este caso:

    www.bluesimplex.com bluesimplex.com
    
  3. El script verifica si ya existe un certificado a renovar o si hay que crear uno nuevo. Al final aparece el siguiente mensaje:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        NOTE: The IP of this machine will be publicly logged as having requested this
        certificate. If you're running certbot in manual mode on a machine that is not
        your server, please ensure you're okay with that.
    
      Are you OK with your IP being logged?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    

    Contesta Y y presiona Enter para continuar.

  4. En este punto el script te pide crear un archivo en tu servidor. La forma más simple es abrir una conexión SSH al servidor y trabajar ahí. Pero desafortunadamente me acabo de enterar que GoDaddy deshabilito acceso a Shell en mi cuenta. Así que usaré un cliente FTP (FileZilla) para esta parte del proceso.

    Asumiré que tienes una copia local de tu sitio web, y que los sincronizas por medio de FTP. En la copia local de tu sitio web crea el directorio .well-known/acme-challenge/. Para esto, en la terminal 2, navega al directorio base que contiene una copia de tu sitio web, y ejecuta el siguiente comando:

    mkdir -p .well-known/acme-challenge
    
  5. En tu editor favorito crea el archivo que se indica en las instrucciones en pantalla de la terminal 1. Es un archivo de texto plano que contiene una cadena de texto aleatoria.

  6. Una vez completado, guarda el archivo en la carpeta .well-known/acme-challenge y con tu cliente FTP súbelo al servidor.

  7. Una vez que el archivo esté en el servidor, presiona Enter en la terminal 1 para continuar.

  8. El mensaje en la terminal 1 te pide crear otro archivo similar. De nuevo, abre tu editor, crea el archivo, guárdalo y súbelo a tu servidor. Una vez hecho eso presiona Enter para continuar.

  9. Espera unos segundos. Aparece un mensaje como el siguiente al completar el proceso exitosamente:

    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at:
       /etc/letsencrypt/live/bluesimplex.com/fullchain.pem
       Your key file has been saved at:
       /etc/letsencrypt/live/bluesimplex.com/privkey.pem
       Your cert will expire on 2023-17-18. To obtain a new or tweaked
       version of this certificate in the future, simply run certbot-auto
       again. To non-interactively renew *all* of your certificates, run
       "certbot-auto renew"
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le
    

Instalar el certificado en tu cuenta de GoDaddy

Para terminal el proceso, resta cargar los certificados en la cuenta de GoDaddy. Dependiendo de la versión de cPanel asociado a tu cuenta el proceso puede ser ligeramente distinto, pero lo que aquí se describe te dará una clara idea de qué hacer.

  1. Ingresa a tu cuenta de GoDaddy y navega hasta la pantalla de cPanel.

  2. En la sección SECURITY da click en SSL/TLS.

  3. Bajo la sección Certificates (CRT) da click en el enlace Generate, view, upload, or delete SSL certificates.

    Important

    Si ya cuentas con un certificado, que se muestra en la lista Certificates on Server, eliminalo antes de continuar.

  4. Abre el archivo fullchain.pem que se creó en la sección anterior, la ubicación la encuentras en el mensaje IMPORTANT NOTES generado en el último paso. En mi caso está en

    /etc/letsencrypt/live/bluesimplex.com/fullchain.pem
    

    Usa cualquier editor de texto plano. Requieres permisos de administrador para abrir este archivo.

  5. Copia la primera mitad de ese archivo, la parte incluida entre estas lineas:

    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
    

    Y pégalo en el cuadro de texto que se encuentra bajo la sección Upload a New Certificate.

  6. Agrega una descripción en el campo Description y da click en Save Certificate.

  7. Da click en Go Back, desplázate a la parte inferior de la página y da click en Return to SSL Manager .

  8. En la sección Install and Manage SSL for your site (HTTPS) da click en Manage SSL sites.

  9. Desplázate hasta la sección Install an SSL Website y da click en el menú emergente Domain, selecciona tu dominio y luego da click en el botón Autofill by domain

    El cuadro de texto Certificate se rellena automáticamente. Si esto no sucede, copia la primera mitad del archivo fullchain.pem, la misma que usaste en el paso 5, y pégala en este cuadro de texto.

  10. Abre con tu editor de texto favorito el archivo privkey.pem generado en la sección anterior. Requieres permisos de administrador para esto. En mi caso el archivo se encuentra en

    /etc/letsencrypt/live/bluesimplex.com/privkey.pem
    
  11. Copia el contenido del archivo y pégalo en el cuadro de texto Private Key.

  12. Copia la segunda mitad del archivo fullchain.pem, la parte que no coiaste en el paso 5, y pégala en el cuadro de texto Certificate Authority Bundle: (CABUNDLE).

  13. Da click en Install Certiciate. Después de unos segundos aparece un mensaje con el título SSL Certificate Succesfully Updated. Da click en OK.

Esto es todo, tu certificado está activo y funcionando. Aunque existe la posibilidad de que tome algunos minutos en funcionar correctamente. Para verificar que tu sitio web ahora usa un certificado SSL, ve a SSL Shopper, o simplemente accede a tu sitio desde chrome o firefox y no verás ningún mensaje de advertencia.

Note

En este momento puedes eliminar la carpeta .well-known de tu servidor.