Я пытаюсь изучить основы настройки сервера Apache и задаюсь вопросом о валидности директив SSL в различных областях действия Apache.
Эти директивы;
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
SSLRequireSSL ...
Где их можно разместить? Только в разделе VirtualHost? Если я размещу их в глобальной области видимости, они будут работать?
Извините, если этот вопрос как-то не соответствует контексту, у меня все еще есть некоторые комплексные проблемы с Apache :)
решение1
Добро пожаловать в мир Apache! Первый урок — научиться читать прекрасную документацию. В документации Apache каждая директива имеетконтекстраздел, который указывает, где в файлах конфигурации сервера директива является допустимой. Его можно найти прямо под строками Syntax:
и Default:
.
конфигурация сервераЭто означает, что директива может использоваться в файлах конфигурации сервера (например,
httpd.conf
), но не внутри каких-либо<VirtualHost>
или<Directory>
контейнеров. Она.htaccess
вообще не допускается в файлах.виртуальный хостЭтот контекст означает, что директива может появляться внутри
<VirtualHost>
контейнеров в файлах конфигурации сервера.каталогДиректива, помеченная как допустимая в данном контексте, может использоваться внутри контейнеров
<Directory>
,<Location>
,<Files>
,<If>
и<Proxy>
в файлах конфигурации сервера с учетом ограничений, изложенных в разделах конфигурации..htaccessЕсли директива допустима в этом контексте, это означает, что она может появляться внутри файлов .htaccess для каждого каталога. Она может не обрабатываться, хотя это зависит от активных в данный момент переопределений.
СSSLEngine
,SSLCertificateFile
,SSLCertificateKeyFile
контексты — конфигурация сервера и виртуальный хост. Это означает, что вы можете указать их для всего сервера, а также переопределить эту конфигурацию по умолчанию для каждого <VirtualHost>
.
TheSSLRequireSSL
Директивас другой стороны, это допустимо в контекстах каталога и .htaccess. Это означает, что вы можете, поместив это в каталог, указать, что не-TLS-соединения не должны быть разрешены, даже если существуют виртуальные хосты HTTP, которые в противном случае обслуживали бы этот каталог.
Однако в наши дни вы должны защищать все с помощью TLS, делая SSLRequireSSL
ненужным. Перенаправьте все HTTP на HTTPS и примените его с помощьюСтрогая безопасность транспорта HTTP(HSTS) политика (RFC6797).