Estou tentando aprender o básico da configuração do servidor Apache e me perguntando sobre a validade das diretivas SSL entre diferentes escopos no Apache.
Essas diretivas;
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
SSLRequireSSL ...
Onde eles podem ser colocados? Somente na seção VirtualHost? Se eu colocar isso no escopo global, eles funcionarão?
Desculpe se esta pergunta está fora do contexto de alguma forma, ainda tenho alguns problemas abrangentes com o Apache :)
Responder1
Bem vindo ao mundo Apache! A primeira lição é aprender a ler a excelente documentação. Na documentação do Apache, toda diretiva possui umcontextoseção que indica onde nos arquivos de configuração do servidor a diretiva é legal. Ele pode ser encontrado logo abaixo das linhas Syntax:
e Default:
.
configuração do servidorIsto significa que a diretiva pode ser usada nos arquivos de configuração do servidor (por exemplo,
httpd.conf
), mas não em nenhum contêiner<VirtualHost>
ou .<Directory>
Não é permitido em.htaccess
arquivos.anfitrião virtualEste contexto significa que a diretiva pode aparecer dentro de
<VirtualHost>
contêineres nos arquivos de configuração do servidor.diretórioUma diretiva marcada como válida neste contexto pode ser usada dentro de
<Directory>
,<Location>
,<Files>
,<If>
e<Proxy>
contêineres nos arquivos de configuração do servidor, sujeita às restrições descritas nas Seções de Configuração..htaccessSe uma diretiva for válida neste contexto, significa que ela pode aparecer dentro de arquivos .htaccess por diretório. Ele pode não ser processado, dependendo das substituições atualmente ativas.
ComSSLEngine
,SSLCertificateFile
,SSLCertificateKeyFile
os contextos são configuração do servidor e host virtual. Isso significa que você pode especificá-los para todo o servidor e também substituir essa configuração padrão por arquivo <VirtualHost>
.
OSSLRequireSSL
Diretivapor outro lado, é legal em contextos de diretório e .htaccess. Isso significa que você pode, colocando isso em um diretório, especificar que conexões não-TLS não devem ser permitidas, mesmo se existirem hosts virtuais somente HTTP que, de outra forma, serviriam esse diretório.
Porém, hoje em dia você deve proteger tudo com TLS, tornando SSLRequireSSL
desnecessário. Redirecione todo HTTP para HTTPS e aplique-o por meio de umSegurança de transporte estrita HTTP(HSTS) política (RFC 6797).