bg-tutorials

Cómo instalar un certificado SSL en lighttpd

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:

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

¿Lighttpd usa un archivo PEM combinado o archivos separados para el certificado y la clave?

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.

¿Sigo necesitando ssl.ca-file para la cadena intermedia?

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.

¿Cómo compruebo la configuración antes de reiniciar Lighttpd?

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.

¿Por qué mi navegador muestra una cadena de certificados incompleta en Lighttpd?

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.

¿Cómo verifico que el certificado SSL está instalado en Lighttpd?

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

Una imagen detallada de un dragón en vuelo
Escrito por

Redactor de contenidos experimentado especializado en Certificados SSL. Transformar temas complejos de ciberseguridad en contenido claro y atractivo. Contribuir a mejorar la seguridad digital a través de narrativas impactantes.