obtener un certificado SSL firmado por Let's Encrypt y configurarlo para usarlo con OpenSSL en tu servidor. Este proceso es ideal para uso en producción ya que Let's Encrypt emite certificados confiables y gratuitos.
1. Preparación inicial
Asegúrate de tener un dominio (por ejemplo, tu-dominio.com
)
apuntando al servidor en el que deseas instalar el certificado. Let's
Encrypt requiere un dominio válido y accesible públicamente.
Además, instala Certbot
, la herramienta recomendada para
gestionar certificados de Let's Encrypt.
Instalación de Certbot:
En distribuciones basadas en Debian/Ubuntu:
sudo apt update sudo apt install certbot
Para otras distribuciones, consulta
https://certbot.eff.org/
2. Solicitar el certificado con Certbot
Ejecuta el siguiente comando para obtener un certificado para tu dominio:
sudo certbot certonly --standalone -d tu-dominio.com
Parámetros:
-
certonly
: Solo genera el certificado, sin intentar configurarlo automáticamente. -
--standalone
: Usa el servidor integrado de Certbot para validar el dominio. -
-d
: Especifica el dominio para el certificado.
Certbot generará los siguientes archivos en
/etc/letsencrypt/live/tu-dominio.com/
:
-
fullchain.pem
: Certificado público completo (incluye el certificado del servidor y los certificados intermedios). -
privkey.pem
: Clave privada del servidor.
3. Configuración del servidor con OpenSSL
Actualiza tu código para usar los archivos generados por Certbot:
SSL_CTX_use_certificate_file(ctx, "/etc/letsencrypt/live/tu-dominio.com/fullchain.pem", SSL_FILETYPE_PEM); SSL_CTX_use_PrivateKey_file(ctx, "/etc/letsencrypt/live/tu-dominio.com/privkey.pem", SSL_FILETYPE_PEM);
Esto asegura que tu servidor use el certificado firmado por Let's
Encrypt.
4. Configurar la renovación automática
Los certificados de Let's Encrypt son válidos por 90 días. Es importante configurar la renovación automática.
Ejecuta el siguiente comando para probar la renovación:
sudo certbot renew --dry-run
Agrega una tarea automática al cron
para que
se renueve regularmente. Abre el cron con:
sudo crontab -e
Agrega la siguiente línea para que se renueve cada día (Let's Encrypt lo renovará solo si es necesario):
0 0 * * * certbot renew --quiet
5. Verificar el certificado
Puedes verificar que el certificado esté funcionando correctamente usando
curl
:
curl -v https://tu-dominio.com
Si el dominio es accesible y el certificado está instalado correctamente, deberías recibir una conexión HTTPS segura.
6. Resumen de archivos con OpenSSL
-
fullchain.pem
: Es el archivo del certificado público completo, que incluye el certificado intermedio requerido. -
privkey.pem
: Es la clave privada del servidor. -
cert.pem
ykey.pem
: Si estuvieras usando nombres personalizados en lugar de los generados por Certbot, asegúrate de cambiar las rutas en tu código de configuración.