Saltar al contenido principal

Servidor web

El artículo presenta ejemplos de parámetros de configuración para los servidores web Apache2 y Nginx, como los más utilizados para las instalaciones de Passwork.

Apache2

<VirtualHost *:443>
ServerName example.com

SSLEngine on
SSLCertificateFile /etc/ssl/passwork/fullchain.pem
SSLCertificateKeyFile /etc/ssl/passwork/privkey.pem
SSLCertificateChainFile /etc/ssl/passwork/chain.pem # if fullchain does not contain full chain

SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on

DocumentRoot /var/www/public
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride FileInfo
Require all granted
</Directory>
<FilesMatch \.php$>
# DEB
#SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
# RPM
#SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
    SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000)

SSLCipherSuite — Define la lista de cifrados permitidos, incluye solo algoritmos modernos y robustos.

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 — Habilita solo versiones modernas y seguras del protocolo TLS (TLS 1.2 y 1.3); deshabilita las versiones vulnerables y obsoletas (SSLv2, SSLv3, TLS 1.0/1.1).

SSLHonorCipherOrder on — Prioriza la lista de cifrados establecida por el servidor (no por el cliente), permitiendo controlar los algoritmos utilizados.

Habilita el almacenamiento en caché de sesiones TLS utilizando SHMCB (caché de memoria compartida), lo que acelera las reconexiones. Tamaño de caché: ~512 KB.

SSLSessionCache shmcb:/var/run/apache2/ssl_scache(512000)

SSLSessionCacheTimeout 300 — Establece el tiempo de vida de las sesiones TLS en la caché (en segundos).

SSL Stapling (OCSP Stapling) — un mecanismo donde el propio servidor solicita el estado del certificado TLS a la Autoridad Certificadora (CA) y lo adjunta a la sesión TLS. Esto acelera la conexión y reduce la carga sobre la CA, mejorando la privacidad del cliente.

peligro

Utilice OCSP Stapling solo si su servidor Passwork puede acceder a servidores DNS públicos.

SSLUseStapling on — Habilita el soporte de OCSP Stapling: el servidor adjunta el estado del certificado TLS de la CA a la conexión, mejorando el rendimiento y la privacidad.

SSLStaplingResponderTimeout 5 — Tiempo máximo de espera para una respuesta del servidor OCSP (CA): si no hay respuesta en 5 segundos, la solicitud se considera fallida.

SSLStaplingReturnResponderErrors off — Si el servidor OCSP no responde, no enviar un error al cliente. La conexión sigue permitida (mejora la resiliencia en redes inestables).

Almacena en caché las respuestas OCSP en memoria compartida, aproximadamente 128 KB, reduciendo la frecuencia de consultas a la CA.

SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000)

SSLSessionTickets off — De forma predeterminada, los tickets están habilitados ya que aceleran el establecimiento de la conexión TLS reutilizando parámetros de sesiones anteriores, reduciendo la carga del servidor. Deshabilitar solo afectará a las conexiones que usen TLS 1.2. Para TLS 1.3, la gestión se realiza mediante OpenSSL y Apache2 no puede deshabilitar su uso.

Nginx

		listen 443 ssl default_server;
ssl_certificate /server/ssl/fullchain.pem;
ssl_certificate_key /server/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;

ssl_protocols TLSv1.2 TLSv1.3; — Restringe las versiones de TLS permitidas a solo las seguras: deshabilita los protocolos SSL/TLS obsoletos y vulnerables (TLS 1.0/1.1).

ssl_ciphers — Define la lista de cifrados permitidos: incluye solo algoritmos modernos y robustos.

ssl_prefer_server_ciphers on; — Especifica usar la prioridad de cifrados del servidor (no del cliente), aumentando el control sobre la seguridad de la conexión.

ssl_session_cache shared:SSL:50m; — Habilita el almacenamiento en caché de sesiones TLS entre conexiones con 50 MB, acelera las reconexiones y reduce la carga.

ssl_session_timeout 1d; — Establece el tiempo de vida de la sesión en la caché: el cliente puede reutilizar la sesión TLS durante un día si la caché no se limpia.

SSL Stapling (OCSP Stapling) — un mecanismo donde el propio servidor solicita el estado del certificado TLS a la Autoridad Certificadora (CA) y lo adjunta a la sesión TLS. Esto acelera la conexión y reduce la carga sobre la CA, mejorando la privacidad del cliente.

peligro

Utilice OCSP Stapling solo si Passwork puede acceder a servidores DNS públicos.

ssl_stapling on; — Habilita OCSP Stapling: el servidor proporciona el estado actualizado del certificado, acelerando la verificación y mejorando la privacidad del cliente.

ssl_stapling_verify on; — Requiere que el servidor verifique la autenticidad de la respuesta OCSP con la CA raíz para evitar entregar un estado inválido o falsificado.

resolver 1.1.1.1 8.8.8.8 valid=300s; — Especifica los servidores DNS para resolver nombres de dominio (por ejemplo, para verificaciones OCSP); las respuestas se almacenan en caché durante 5 minutos. El ejemplo usa Cloudflare (1.1.1.1) y Google DNS (8.8.8.8).

resolver_timeout 5s; — Tiempo máximo de espera para la respuesta DNS: si no hay respuesta en 5 segundos, la solicitud se considera fallida.

ssl_session_tickets off; — Deshabilita los tickets de sesión TLS.

De forma predeterminada, los tickets están habilitados ya que aceleran el establecimiento de la conexión TLS reutilizando parámetros de sesiones anteriores, reduciendo la carga del servidor. Deshabilitar tiene sentido solo si se cumplen simultáneamente todas las siguientes condiciones:

  • La aplicación se ejecuta en múltiples servidores;
  • Se utiliza un único certificado comodín en todas las instancias;
  • Los servidores están distribuidos en diferentes centros de datos y no existe una gestión centralizada de las claves de sesión TLS.