Para habilitar HTTPS en su página web, tiene que obtener un certificado (un tipo de archivo) de una Autoridad de Certificación (AC, o CA por sus siglas en inglés). Let’s Encrypt es una AC gratuita, automática y abierta.
Antes de obtener un certificado para su dominio web, Ud tiene que demonstrar control (propiedad) sobre dicho dominio. Con Let’s Encrypt, puede hacer esto con el software cliente que usa el protocolo ACME llamado Certbot (aunque existen otras alternativas como openSSL).
Determinar el método que funcionará mejor para ti, depende básicamente de tus conocimientos y tipo de accesos que tengas en tu hosting. Hay varias opciones de acceso a tu servidor contratado. Mira la clasificación en grupos:
Si perteneces al grupo: 1 o 2, podrás automatizar la emisión y renovación de certificados, con solo instalar y configurar el cliente ACME Certbot en el propio servidor. Aquí tu siguiente tarea seria descargar el cliente ACME Certbot adecuado según el sistema operativo de tu servidor o investigar algún otro cliente ACME que prefieras.
Si estas en el grupo 1 o 2 este manual no es para ti.
Si perteneces al grupo 3, es decir no tienes o no sabes usar el shell (acceso SSH), pero tienes acceso al panel de control (cPanel) y quieres obtener certificados gratuitos SSL de Let’s Encrypt estas en el lugar correcto y te animo a seguir para lograrlo.
Si perteneces al grupo 4, también debes seguir estas instrucciones y al finalizar pedirle a tu proveedor de hosting que instale los certificados que obtuviste por este método.
El proceso consta de cinco (5) pasos básicos:
Lo primero sera descargar e instalar un cliente ACME Certbot adecuado al sistema operativo de nuestra computadora para poder instalarlo y ejecutarlo.
Si, no estoy equivocado el cliente se ejecutara en la computadora de tu casa u oficina, localmente, no en el servidor donde esta alojada tu pagina web. Tranquilo lo que haremos no tiene ningún peligro y se llama hacer todo manualmente.
certbot [comandos] [opciones] [-d su_dominio]
Dicha computadora se comunicara con el servidor de Let’s Encrypt para enviar datos, recibir instrucciones y los certificados al final del proceso por lo que debe tener internet.
certbot certonly --manual certbot certonly --manual -d su_dominio certbot certonly --manual -d su_dominio -d *.su_domino --manual-public-ip-loggin --rsa-key-size 4096 -vvv
Comando | Descripción |
---|---|
certonly | Obtener o renovar un certificado, pero no lo instala. |
renew | Renueve todos los certificados obtenidos previamente que estén a punto de caducar. |
certificates | Muestra información sobre los certificados creados con Certbot en esta computadora. |
revoke | Revocar certificado. Debe dar --cert_name o --cert_path |
delete | Borra certificado. Aparece menú. |
register | Crear una cuenta ACME. |
unregister | Desactivar una cuenta ACME. |
update_account | Actualizar cuenta ACME. |
Opción | Descripción |
---|---|
--manual | Obtener certificado de forma interactiva o con ganchos (hook) de script de shell. |
--agree-tos | Aceptar la licencia ACME. |
--manual-public-ip-loggin | Aceptar el registro publico de tu IP. Predeterminado es preguntar. |
--debug-challenges | Después de configurar los desafíos, espere la entrada del usuario antes de enviar a CA. Predeterminado: falso. |
--register-unsafely-without-email | Permite registrar una cuenta sin dirección de correo electrónico. Esto se desaconseja encarecidamente, porque en caso de pérdida de clave o compromiso de la cuenta, perderá irrevocablemente el acceso a su cuenta. Tampoco podrá recibir notificaciones sobre el vencimiento o la revocación inminentes de sus certificados. Las actualizaciones del Acuerdo del suscriptor aún lo afectarán y entrarán en vigencia 14 días después de publicar una actualización en el sitio web. Predeterminado: falso |
--rsa-key-size | Seleccionar tamaño de clave: 4096 |
--preferred-challenges | Elegir un desafío: dns | http. Predeterminado http. |
--cert-name | Nombre del certificado a asignar. Certbot usa este nombre para la limpieza y en las rutas de archivos; no afecta el contenido del certificado en sí. Para ver los nombres de los certificados, ejecute 'certbor certificados'. Al crear un nuevo certificado, especifica el nombre del nuevo certificado. Predeterminado: el primer dominio proporcionado o el nombre de un certificado existente en su sistema para los mismos dominios. |
--help | Ayuda simple. |
--version | Muestra la version del cliente ACME. |
Bandera | Descripción |
---|---|
-d su_dominio | Lista de dominios separados por comas o espacio, para obtener un certificado. El primer dominio proporcionado será el sujeto CN del certificado y todos los demás dominios serán nombres alternativos de sujeto en el certificado. El primer dominio también se usará en algunas interfaces de usuario de software y como rutas de archivo para el certificado y material relacionado, a menos que se especifique lo contrario o ya tenga un certificado con el mismo nombre. En el caso de una colisión de nombres, agregará un número como 0001 al nombre de la ruta del archivo. (predeterminado: Preguntar) |
-vvv | Aumenta el texto de respuesta (explica mejor) |
-m correo | Indica el correo asignado a la cuenta ACME. |
-h | Ayuda simple. |
El cliente ACME Certbot que ya debe estar instalado solo corre desde la ventana de comandos y debes hacer algunas comprobaciones primero.
certbot --version certbot --help certbot -h all > help_certbot.txt
En Windows debes ejecutar la ventana de comandos (CMD) como administrado (clic derecho ejecutar como administrador).
Estos apuntes fueron basados en Cerbot v1.24.0
Si todo esta bien podemos empezar con el proceso asi:
certbot certonly --manual
Nota que es muy importante que incluyas el comando certonly y la opción --manual para indicar que solo quieres obtener y no instalar (porque lo haremos manualmente) el certificado. El cliente se inicia con una serie de preguntas:
No des Enter antes de completar el desafío ACME
Podrías responder a alguna de estas preguntas de manera antelada por ejemplo:
certbot certonly --manual -d su_dominio -d www.sudominio --preferred-challenges dns --vvv
Aqui estamos definiendo los dominios y que preferimos el tipo de desafío por DNS. Mira las tablas arriba para mas detalles.
Antes de que Let's Encrypt le pueda otorgar un certificado, debe validar que usted controla (es propietario) de dicho dominio. A esa tarea de validación le llamamos "desafíos" ACME (challenges). Si Ud tuviera acceso al shell el cliente ACME Certbot estaría instalado en el servidor por lo que podría hacer esta validación automáticamente sin su ayuda. Pero ya que Ud esta leyendo estas lineas el cliente ACME Certbot no se encuentra instalado en el servidor sino en otra computadora con conexión a internet, por lo que nos toca hacer este proceso manualmente.
Este desafío le pide que demuestre que controla el DNS de su dominio poniendo un valor específico en un registro tipo TXT debajo de ese nombre de dominio. También le permite emitir certificados comodín. Después de que Let's Encrypt le dé a su cliente ACME un token, su cliente le solicitara crear un registro TXT de nombre _acme-challenge.su_dominio y contenido el token.
certbot certonly --manual --preferred-challenges dns
Puede tener múltiples registros TXT para el mismo nombre. Por ejemplo, esto podría suceder si está validando un desafío para un comodín y un certificado sin comodín al mismo tiempo. Sin embargo, debe asegurarse de limpiar los registros TXT antiguos, porque si el tamaño de la respuesta es demasiado grande, Let's Encrypt comenzará a rechazarlo.
Para comprobar si cumpliste con el desafío puedes usar ToolBox. En la casilla de texto escribe la clave: _acme-challege.su_nominio, luego seleccione la opción: TXT Lookup y dele clic al botón TXT Lookup. Deberas poder comprobar que la respuesta es el <Token> de Let's Encrypt
Ventajas desafío DNS:
Desventajas desafío DNS:
La mayoría de los proveedores de DNS tienen un "tiempo de propagación" que gobierna cuánto tiempo lleva desde el momento en que actualiza un registro DNS hasta que esté disponible en todos sus servidores. Puede ser difícil medir esto porque a menudo también usan anycast, lo que significa que varios servidores pueden tener la misma dirección IP y dependiendo de dónde se encuentre en el mundo, puede hablar con un servidor diferente (y obtener una respuesta diferente) que Let's Encrypt lo hace. Las mejores API de DNS le brindan una forma de verificar automáticamente si la actualización se propaga completamente. Si su proveedor de DNS no tiene esto, solo tiene que configurar su cliente para que espere lo suficiente (a menudo hasta una hora) para asegurarse de que la actualización se propague antes de activar la validación.
Para crear una entra DNS desde cPanel debes ir a la sección DOMINIOS y entrar en Zone Editor, clic en ADMINISTAR en el dominio que quieres certificar, "añadir registro" y en nombre debes poner _acme-challenge.su_dominio, tipo: TXT y en registrar copiar el Token dado por Let's Encrypt. Si solicitaste certificado comodín tendrás que crear 2 entras con mismo nombre y Token distintos.
Recuerda que debes esperar suficiente tiempo para que el servidor DNS propague este dato por todos los servidores antes de continuar o el desafío no se dara por cumplido. Mejor comprobar primero.
Este es el tipo de desafío más comúnmente usado por lo que es el predeterminado en el cliente. Let's Encrypt le da un <Token> a su cliente ACME y Ud debe crear y colocar este archivo en su servidor web en http://su_dominio/.well-known/acme-challenge/<Token>. Ese archivo con el nombre del <Token> (sin extencion), continen una huella digital que es la clave de su cuenta (dado en el desafío).
certbot certonly --manual --preferred-challenges http
Para comprobar si se cumplió con este desafío puede consultar en un navegador la siguiente URL: http://su_dominio/.well-known/acme-challenge/<Token>. Deberás poder comprobar que la respuesta es la huella digital de su cuenta.
Ventajas desafío HTTP:
Desventajas desafío HTTP:
Solo acepta URL "http:" no puede ser "https:" y solo usando los puertos 80. Si su dominio tiene redireccion de IP (tipicamente via .htaccess) el desafío sera desaprobado.
En la sección ARCHIVOS de cPanel la opción "Administrador de archivos" selecciona la carpeta public_html (www) si se trata de su dominio principal u otra carpeta mas profunda si se trata de otro dominio y debe crear las carpetas .well-known/acme-challenge luego "cargar" el archivo de nombre /<Token> que contiene la huella digital de su cuenta. Recuerde que las carpetas o archivos que tiene un . delante están ocultos a no se que en configuracion este seleccionada la casilla "Mostrar archivos ocultos".
Este desafío se definió en versiones preliminares de ACME. Se trata de una conexion via TLS con protocolo HTTPS el puerto 443, para enviar un encabezado SNI específico con el token. Fue deshabilitado en MAR-2019 porque no era lo suficientemente seguro.
Una vez que ejecutaste el desafío ya sea DNS o HTTP (puede pedirte mas de uno) es momento de comprobar si Let's Encript te valida el dominio, por lo que es momento de dar Enter en el cliente Certbot (que se encuentra detenido esperado con las instrucciones del desafío mostradas en la consola sea ejecutadas manualmente en su servidor por Ud).
Si Let's Encript encuentra una coincidencia dará el desafío por superado y procede a emitir el certificado. Si no aprueba el desafío le informara del error y tendrá que iniciar la solicitud de un nuevo certificado.
Si el resultado es correcto encontraras un mensaje con los datos del certificado y la carpeta donde se instalaron estos. Ejemplo C:\Certbot\live\tu_dominio\
Una vez obtenidos los certificados debes instalarlos en tu servidor. Eso lo puedes hacer tu mismo si tienes acceso al panel de control. En cPanel debes entras en la sección SEGURIDAD, luego en la opción SSL/TLS y finamente en la opción Instalar y administrar SSL para sitios (HTTPS).
Nota 1. Te confirma --> dominio: tu_dominio, emisor: Let's Encrypt tamaño de clave: 2,048 bits vencimiento: 01-NOV-2020
Nota 2. En la mayoría de los casos, no necesita proporcionar el paquete de CABUNDLE (CA) porque el servidor lo recuperará del repositorio público de Let's Encrypt.
Renovar el certificado es exactamente igual que obtener uno nuevo, debes aprobar el desafie e instalar el certificado.
certbot certificates certbot certonly --manual --cert-name tu_certificado
Dado que dejar las credenciales de DNS y/o carpeta .well-known/acme-challenge en su servidor web aumenta significativamente el impacto si ese servidor web fuese pirateado, es una muy buena práctica borrar la o las entradas DNS y/o carpeta .well-known/acme-challenge que creaste con Zone Editor y/o el administrador de archivos ya que dejaron de tener utilidad después de emitido el certificado.