He estado mirando últimamente la manera de empezar con Let’s Encrypt en un proyecto que andamos terminando. No lo había probado hasta ahora, pero tras leer un rato me he decantado por el script en BASH, Acme.sh, ya que el servidor sobre el que tengo que montar en producción está un poco desfasado y el cliente oficial (certbot) no funciona por defecto.
Esto es lo que he hecho para hacer funcionar Acme.sh en CentOS 5:
- Instalar según el proyecto indica en el README. La única particularidad es que al utilizar wget para descargar el fichero acme.sh es necesario añadir –no-check-certificate.
- Al intentar generar el certificado por primera vez fallaba y he necesitado añadir –insecure a la línea que estaba utilizando. Esto está relacionado con el parámetro anterior que he tenido que añadir a wget, y se debe a la versión de wget precisamente que hay disponible en los repositorios de CentOS.
- Salvando este escollo, mi siguiente pega estaba en que Let’s Encrypt me rechazaba con un error 403 por falta de autenticación. He estado mirando por diferentes ficheros de mi instalación y modificando la línea en la que se añade un correo electrónico, en el fichero /home/mi-usuario/.acme.sh/account.conf (la línea comentada que empieza con ACCOUNT_EMAIL), se ha podido generar el certificado.
- Mi siguiente pega ha sido con Rails: el proyecto que estaba poniendo en producción es una proyecto hecho en Rails y en la línea en que se indica a Acme.sh donde esta el raiz del proyecto para que realice la verificación automática del dominio, se debe añadir el directorio «public» para que la verificación no falle.
En concreto, para que todo vaya bien esta ha sido la línea final de generación del certificado:
acme.sh --issue -d mi.dominio.com --insecure -w /mi/ruta/hasta/proyecto/rails/public
El parámetro –debug es bastante útil también para ver que pasa bajo el capó 😉
Una vez generado el certificado es cuestión de configurar Apache (servicio HTTPD en CentOS) como cualquier otro (hay abundante documentación al respecto, o sea que no me meto, aunque quizá este sea un buen enlace al respecto) y listo 🙂
La conexión entre Apache y el proyecto Rails, en este caso se realiza con Phussion Passenger y no es necesario hacer nada mas al respecto. Únicamente en la aplicación Rails es necesario añadir que SSL debe estar activado. En este enlace se explica muy claramente cómo hacerlo para aplicaciones Rails (superiores a 3.1 e inferiores también).
Una nota interesante también es cómo redireccionar el tráfico del puerto 80 al 443 para servir siempre desde HTTPS y que ninguna petición se escape por el puerto 80. En el wiki de Apache se explica perfectamente 🙂
Mi conclusión es que muy positiva al respecto de Let’s Encrypt: en general es un proceso sencillo, y las pequeñas trampas que hay que solucionar son pequeñas piedras en el camino de cualquier administrador mínimamente experimentado. ¡Ánimo y probadlo!.
4 respuestas a Acme.sh facil (no tanto en CentOS 5)