Estoy tratando de aprender los conceptos básicos de la configuración del servidor Apache y me pregunto acerca de la validez de las directivas SSL entre los diferentes ámbitos de Apache.
Esas directivas;
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
SSLRequireSSL ...
¿Dónde se pueden colocar? ¿Solo en la sección VirtualHost? Si los coloco en el ámbito global, ¿funcionarán?
Lo siento si esta pregunta está fuera de contexto de alguna manera, todavía tengo algunos problemas generales con Apache :)
Respuesta1
¡Bienvenido al mundo de Apache! La primera lección es aprender a leer la excelente documentación. En la documentación de Apache, cada directiva tiene uncontextosección que indica en qué parte de los archivos de configuración del servidor la directiva es legal. Se puede encontrar justo debajo de las líneas Syntax:
y Default:
.
configuración del servidorEsto significa que la directiva puede usarse en los archivos de configuración del servidor (por ejemplo,
httpd.conf
), pero no dentro de ninguno<VirtualHost>
de<Directory>
los contenedores. No está permitido en.htaccess
ningún archivo.anfitrión virtualEste contexto significa que la directiva puede aparecer dentro de
<VirtualHost>
contenedores en los archivos de configuración del servidor.directorioUna directiva marcada como válida en este contexto se puede utilizar dentro de
<Directory>
,<Location>
,<Files>
,<If>
y<Proxy>
contenedores en los archivos de configuración del servidor, sujeto a las restricciones descritas en las Secciones de Configuración..htaccessSi una directiva es válida en este contexto, significa que puede aparecer dentro de archivos .htaccess por directorio. Es posible que no se procese, aunque dependerá de las anulaciones actualmente activas.
ConSSLEngine
,SSLCertificateFile
,SSLCertificateKeyFile
los contextos son configuración del servidor y host virtual. Esto significa que puede especificarlos para todo el servidor y también anular esta configuración predeterminada según <VirtualHost>
.
ElSSLRequireSSL
Directivapor otro lado, es legal en contextos de directorio y .htaccess. Esto significa que puede, al colocar esto en un directorio, especificar que no se deben permitir conexiones que no sean TLS incluso si existe un host virtual solo HTTP que de otro modo serviría a este directorio.
Sin embargo, hoy en día debes proteger todo con TLS, lo que lo hace SSLRequireSSL
innecesario. Redirigir todo HTTP a HTTPS y aplicarlo mediante unSeguridad de transporte estricta HTTP(HSTS) política (RFC 6797).