En este tutorial, aprenderás cómo instalar un certificado SSL en Lighttpd. La guía cubre la configuración actual (certificado y clave privada por separado con el módulo mod_openssl), el método heredado de PEM combinado para versiones anteriores, y una prueba rápida de configuración antes de reiniciar.
También grabamos un video que te guía a través de todo el proceso. Si prefieres la versión en texto, sigue leyendo a continuación.
Generar un código CSR en Lighttpd
Comenzaremos con la generación del CSR (Certificate Signing Request). Un CSR es un bloque de texto codificado que envías a una Autoridad de Certificación para solicitar un certificado SSL. Tienes dos opciones:
- Usa nuestro Generador de CSR para crear el CSR automáticamente.
- Sigue nuestro tutorial paso a paso sobre cómo generar un CSR en Lighttpd.
Abre el archivo CSR con cualquier editor de texto y copia su contenido, incluyendo las líneas BEGIN CERTIFICATE REQUEST y END CERTIFICATE REQUEST, en el cuadro correspondiente durante el proceso de pedido del SSL. Envía el CSR a la Autoridad de Certificación y espera la validación. Después de que la CA emita tu certificado SSL, continúa con la instalación a continuación.
Instalar un certificado SSL en Lighttpd
Paso 1: Prepara tus archivos de certificado
Después de la validación, la Autoridad de Certificación te envía por correo electrónico los archivos del certificado. Descarga el archivo comprimido y extráelo. Deberías tener:
- yourdomain.crt, tu certificado SSL principal.
- yourdomain.ca-bundle, los certificados intermedios (el paquete de CA).
- yourdomain.key, la clave privada que generaste con el CSR.
Lighttpd recomienda que el archivo referenciado por ssl.pemfile contenga la cadena de certificados completa: primero tu certificado, seguido de los certificados intermedios. Crea ese archivo de cadena combinado, luego mueve tanto ese archivo como la clave privada a un directorio que Lighttpd pueda leer (por ejemplo /etc/lighttpd/ssl/):
cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem
sudo mkdir -p /etc/lighttpd/ssl
sudo cp yourdomain.fullchain.pem yourdomain.key /etc/lighttpd/ssl/
Restringe la clave privada para que solo root pueda leerla:
sudo chmod 600 /etc/lighttpd/ssl/yourdomain.key
Paso 2: Habilita mod_openssl
Desde la versión 1.4.56, el soporte TLS en Lighttpd reside en un módulo cargable llamado mod_openssl (también existen otros backends como mod_mbedtls, mod_wolfssl, mod_gnutls y mod_nss). Cárgalo en tu archivo de configuración principal antes del bloque de socket SSL:
server.modules += ( "mod_openssl" )
Nota: en Lighttpd 1.4.55 y anteriores, TLS venía compilado en lugar de cargarse como módulo, por lo que puedes omitir esta línea en esas versiones. Comprueba tu versión con lighttpd -v.
Paso 3: Edita lighttpd.conf
Abre el archivo de configuración principal (la ruta suele ser /etc/lighttpd/lighttpd.conf) con tu editor preferido:
sudo nano /etc/lighttpd/lighttpd.conf
Añade un bloque de socket para el puerto 443. En las versiones actuales de Lighttpd (1.4.56+), mantén la cadena de certificados y la clave privada en archivos separados: apunta ssl.pemfile al archivo de cadena completa y ssl.privkey a la clave. Este es el formato en que la mayoría de las Autoridades de Certificación entregan los archivos, y es la configuración que Lighttpd recomienda.
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
# Minimum TLS version (ssl-conf-cmd needs lighttpd 1.4.48+; TLS 1.2 is already the default on 1.4.56+)
ssl.openssl.ssl-conf-cmd = ( "MinProtocol" => "TLSv1.2" )
}
- ssl.engine activa TLS para este socket.
- ssl.pemfile contiene tu certificado seguido de la cadena intermedia.
- ssl.privkey contiene la clave privada. Es obligatorio desde la versión 1.4.53 siempre que la clave no esté dentro del pemfile.
Para redirigir el HTTP simple a HTTPS de modo que los visitantes lleguen siempre a la versión segura, añade una redirección para el puerto 80 (esto requiere mod_redirect, que se carga por defecto en la mayoría de las distribuciones):
$SERVER["socket"] == ":80" {
url.redirect = ( "^/(.*)" => "https://yourdomain.com/$1" )
}
Guarda y cierra el archivo.
Método heredado: PEM combinado y ssl.ca-file
Las versiones más antiguas de Lighttpd 1.4.x (anteriores a la 1.4.53) usaban un único PEM combinado que contenía tanto el certificado como la clave privada concatenados, con la cadena intermedia proporcionada por separado mediante ssl.ca-file. Si estás manteniendo uno de esos sistemas más antiguos, crea el archivo combinado de esta manera:
cat yourdomain.crt yourdomain.key > /etc/lighttpd/ssl/yourdomain.pem
Luego, haz referencia a él en el bloque de socket:
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.pem"
ssl.ca-file = "/etc/lighttpd/ssl/yourdomain.ca-bundle"
}
En las versiones actuales de Lighttpd, prefiere la forma separada de ssl.pemfile y ssl.privkey del Paso 3 y mantén la cadena completa en el pemfile. La directiva ssl.ca-file se renombró como ssl.verifyclient.ca-file en la versión 1.4.60, ya que su propósito real es verificar certificados de cliente y no servir la cadena del servidor.
Paso 4: Prueba la configuración
Comprueba siempre la sintaxis antes de reiniciar, ya que un error puede impedir que el servidor arranque. Ejecuta:
sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf
Deberías ver un mensaje indicando que la sintaxis es correcta. Para una comprobación más profunda que también cargue e inicialice los módulos, usa sudo lighttpd -tt -f /etc/lighttpd/lighttpd.conf. Corrige cualquier error reportado antes de continuar.
Paso 5: Reinicia Lighttpd
Aplica los cambios. En un sistema moderno con systemd, reinicia el servicio:
sudo systemctl restart lighttpd
En sistemas más antiguos que usan SysV init, usa el script de inicio en su lugar:
sudo /etc/init.d/lighttpd restart
Enhorabuena, tu certificado SSL ya está instalado en Lighttpd. Para confirmar el resultado y obtener un informe de estado instantáneo, usa nuestro SSL Checker o explora nuestro conjunto completo de herramientas SSL. Para opciones avanzadas, consulta la documentación oficial de SSL de Lighttpd.
Preguntas frecuentes
Las versiones actuales de Lighttpd (1.4.56 y posteriores) recomiendan archivos separados: el certificado más su cadena intermedia en el archivo indicado por ssl.pemfile, y la clave privada en ssl.privkey. El antiguo PEM combinado que concatenaba el certificado y la clave en un solo ssl.pemfile sigue funcionando, pero la forma separada coincide con la manera en que la mayoría de las Autoridades de Certificación entregan los archivos y es la recomendación documentada.
No. La recomendación actual es incluir los certificados intermedios directamente en el archivo ssl.pemfile, justo después de tu certificado. La directiva ssl.ca-file era una forma histórica de completar la cadena cuando el pemfile solo contenía el certificado hoja, y en la versión 1.4.60 se renombró como ssl.verifyclient.ca-file porque su verdadero papel es la verificación de certificados de cliente.
Ejecuta sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf para probar la sintaxis, o sudo lighttpd -tt -f /etc/lighttpd/lighttpd.conf para una prueba más profunda que también cargue los módulos. Corrige cualquier error que se reporte antes de reiniciar, para que un error tipográfico no impida que el servidor arranque.
Esto suele significar que faltan los certificados intermedios en tu ssl.pemfile. Concatena tu certificado y el paquete de CA en un solo archivo, con el certificado primero, y apunta ssl.pemfile hacia él. Luego prueba la configuración y reinicia. Puedes confirmar que la cadena está completa con nuestro SSL Checker.
Conéctate a tu sitio con OpenSSL y lee el certificado que ofrece:echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Si el certificado está instalado, esto imprime su emisor y las fechas de validez. También puedes abrir tu sitio en un navegador y comprobar el candado.
Ahorre un 10% en certificados SSL al realizar su pedido hoy mismo.
Emisión rápida, cifrado potente, 99,99% de confianza del navegador, asistencia dedicada y garantía de devolución del dinero en 25 días. Código del cupón: SAVE10


