Cifremos la validación de certbot sobre HTTPS

16

De los documentos del plugin webroot Certbot

El complemento webroot funciona creando un archivo temporal para cada uno de los dominios solicitados en ${webroot-path}/.well-known/acme-challenge. Luego, el servidor de validación Let's Encrypt realiza solicitudes HTTP para validar que el DNS para cada dominio solicitado se resuelva en el servidor que ejecuta certbot.

En un servidor doméstico de uso privado, tengo el puerto 80 deshabilitado, es decir, no se habilita el reenvío de puertos en el enrutador. No tengo intención de abrir ese puerto.

¿Cómo puedo decirle a certbot que el servidor de validación no debe realizar una solicitud HTTP, sino una solicitud HTTPS (puerto 443), para validar la propiedad del dominio?

El servidor de validación ni siquiera debería tener la necesidad de validar el certificado del servidor doméstico, ya que ya usa HTTP de forma predeterminada. Es posible que tenga un certificado autofirmado o el certificado que está por renovar, pero eso no debería importar.

Actualmente estoy en la situación en la que necesito habilitar el reenvío del puerto 80, así como un servidor en él, para crear / renovar certificados. Esto no me permite usar un cronjob para renovar el certificado. Bueno, con suficiente trabajo, pero ya tengo un servidor escuchando en 443, que también podría hacer el trabajo.

Daniel F
fuente

Respuestas:

8

Como se informó en https://community.letsencrypt.org/t/shouldnt-verification-via-dns-record-be-a-priority/604/47, el actualizador letsencrypt.sh admite la validación a través de DNS. Pocos scripts de actualización parecen haber implementado esto. Sin embargo, el método HTTP es el más sencillo de implementar para la configuración inicial.

El script que tiene puede usar TNS SNI o Prueba de posesión de una clave anterior para renovaciones. Las especificaciones se pueden encontrar en https://tools.ietf.org/html/draft-ietf-acme-acme-01#section-7.5 . Si este es el caso, no necesitará tener HTTP habilitado.

BillThor
fuente
Gracias, olvidé la verificación basada en DNS. Ha sido relativamente difícil encontrar información sobre él, ya que los documentos apenas lo mencionan. No hay gancho para Namecheap, así que intentaré implementar uno ahora y comprobaré cómo funciona. Aceptaré la respuesta si funciona como se esperaba, pero podría llevar algún tiempo ya que actualmente no hay dominios para la renovación. De lo contrario, tendré que hornear el comando --webroot en el servidor para que el servidor actúe como un contenedor que se pueda acortar.
Daniel F
Acabo de marcar, la API de Namecheap es bastante mala (sobrescribe TODOS los registros para agregar o modificar uno), DNS no es una opción en este caso. También estoy usando otros registradores, lo que hace que las cosas sean más complicadas (administración de claves API). La clave API de Namecheap le da incluso acceso para registrar nuevos dominios o transferir dominios, esto es inseguro como FK.
Daniel F
@DanielF Espero que no se use la validación de DNS o HTTP para la renovación. Tampoco es necesario, ya que sus servidores deben pasar TLS SNI para el certificado existente, y la solicitud se puede firmar con el certificado existente. Cualquiera de los dos debería ser suficiente. DNS y HTTP son métodos razonables para registrarse. Debería tener 30 días para resolver los problemas cuando su primer certificado esté por renovar.
BillThor