mod_ssl#
Описание#
mod_ssl предназначен для обеспечения поддержки протоколов SSL (Secure Sockets Layer) и TLS (Transport Layer Security), которые используются для шифрования данных, передаваемых между веб-сервером и клиентом. Модуль позволяет настроить безопасное соединение (HTTPS) для веб-сайтов, обеспечивая защиту данных от перехвата и подмены.
mod_ssl может работать в сочетании с другими модулями, такими как mod_rewrite и mod_auth_basic, для создания комплексных систем безопасности.
Примечание
Для использования HTTPS необходим SSL-сертификат, который можно сгенерировать с помощью openssl. Подробнее - в разделе «База знаний» → «Утилита openssl».
Пример конфигурации#
Пример конфигурации, настроенной с помощью модуля mod_ssl:
# Порт, на котором будет слушать виртуальный хост
<VirtualHost *:443>
# Доменное имя, для которого будут обрабатываться запросы
ServerName www.example.com
# Корневая директория для виртуального хоста
DocumentRoot /var/www/html
# Включение поддержки SSL
SSLEngine on
# Путь к файлу SSL-сертификата
SSLCertificateFile /etc/ssl/certs/example.com.crt
# Путь к файлу закрытого ключа, соответствующего SSL-сертификату
SSLCertificateKeyFile /etc/ssl/private/example.com.key
# Путь к файлу цепочки сертификатов
SSLCertificateChainFile /etc/ssl/certs/chain.crt
# Начало блока конфигурации для каталога DocumentRoot
<Directory /var/www/html>
# Использование файлов .htaccess в каталоге
AllowOverride All
</Directory>
</VirtualHost>
Директивы#
Список директив модуля представлен в таблице ниже.
Синтаксис |
Значение по умолчанию |
Контекст |
Описание |
|---|---|---|---|
|
Нет |
|
Указывает файл, содержащий конкатенированные (объединенные) PEM-кодированные сертификаты CA для аутентификации клиентов. Этот файл представляет собой последовательное объединение PEM-кодированных файлов сертификатов в порядке предпочтения. Файл может использоваться альтернативно и/или дополнительно к директиве |
|
Нет |
|
Указывает каталог, в котором хранятся сертификаты удостоверяющих центров (CA). Эти сертификаты используются для проверки клиентского сертификата при аутентификации клиентов |
|
Нет |
|
Указывает файл, содержащий конкатенированные PEM-кодированные сертификаты CA для определения допустимых имен CA. Когда модуль |
|
Нет |
|
Указывает каталог PEM-кодированных сертификатов CA для определения допустимых имен CA, которые будут отправлены клиенту при запросе клиентского сертификата. Директива является необязательной. Для получения дополнительных сведений см. директиву |
|
|
|
Включает проверку сертификатов на основе списка отзыва сертификатов (CRL). Должен быть настроен хотя бы один из параметров |
|
Нет |
|
Указывает файл, содержащий конкатенированные PEM-кодированные списки отзыва сертификатов (CRL) удостоверяющих центров (CA) для аутентификации клиентов. Этот файл представляет собой простую конкатенацию различных PEM-кодированных файлов CRL в порядке предпочтения. Файл может использоваться альтернативно и/или дополнительно к директиве |
|
Нет |
|
Указывает каталог, в котором хранятся списки отзыва сертификатов (CRL) удостоверяющих центров (CA) для аутентификации клиентов. Эти списки используются для отзыва клиентского сертификата при аутентификации клиентов |
|
Нет |
|
Директива не рекомендована, вместо нее используйте |
|
Нет |
|
Указывает на файл с данными сертификата в формате PEM или идентификатор сертификата через настроенный криптографический токен. Если используется PEM-файл, он должен содержать как минимум сертификат конечного объекта (leaf). Директива может использоваться несколько раз (ссылаясь на разные имена файлов) для поддержки нескольких алгоритмов аутентификации сервера |
|
Нет |
|
Указывает на файл с PEM-кодированным закрытым ключом сервера или идентификатором ключа через настроенный криптографический токен. Если содержащийся в файле закрытый ключ зашифрован, при запуске будет запрашиваться ввод пароля |
|
|
|
Использует строку спецификаций шифров OpenSSL, разделенных двоеточием, для настройки набора шифров, который клиент может согласовать на этапе «SSL-рукопожатия». Необязательный спецификатор протокола может настроить набор шифров для конкретной версии SSL |
|
|
|
Позволяет включить сжатие данных, передаваемых по защищенному соединению, на уровне SSL |
|
|
|
Позволяет использовать аппаратный криптографический ускоритель для разгрузки части нагрузки обработки SSL |
|
|
|
Переключает использование SSL/TLS протокольного движка. Должна использоваться внутри секции |
|
|
|
Переключает использование флага |
|
|
|
Позволяет выбрать порядок шифров сервера. При выборе шифра во время «рукопожатия» SSL или TLS обычно используется предпочтение клиента. Если эта директива включена, будет использоваться предпочтение сервера |
|
|
|
Позволяет включить поддержку «небезопасной» повторной аутентификации. Версии протоколов SSL и TLS (до и включая TLS/1.2) были уязвимы для атаки «человек посередине» во время повторной аутентификации. Разработано расширение протоколов, которое устранило эту уязвимость |
|
Нет |
|
Устанавливает URI по умолчанию для OCSP-ответчика, который будет использоваться. Если директива |
|
|
|
Включает проверку OCSP для цепочки сертификатов клиента. Если включена, сертификаты в цепочке сертификатов клиента будут проверяться на соответствие OCSP-ответчику после обычной проверки (включая проверки CRL). В режиме |
|
|
|
Позволяет пропустить проверку сертификатов OCSP-ответчика, что может быть полезно при тестировании OCSP-сервера |
|
|
|
Принудительно использует настроенный по умолчанию OCSP-ответчик во время проверки сертификатов OCSP, независимо от того, ссылается ли проверяемый сертификат на OCSP-ответчик |
|
Нет |
|
Указывает URL прокси-сервера, который будет использоваться для всех запросов к OCSP-ответчикам. Позволяет настроить прокси для обработки запросов на проверку статуса сертификатов |
|
Нет |
|
Указывает набор доверенных PEM-кодированных сертификатов OCSP-ответчиков, которые будут использоваться при валидации сертификатов OCSP-ответчиков. Предоставленные сертификаты считаются доверенными без дополнительной валидации. Обычно используется, когда сертификат OCSP-ответчика самоподписан или отсутствует в ответе OCSP |
|
|
|
Устанавливает тайм-аут для запросов к OCSP-ответчикам, когда включен параметр |
|
|
|
Устанавливает максимально допустимый «возраст» для ответов OCSP. Значение по умолчанию ( |
|
|
|
Устанавливает максимально допустимый временной сдвиг для валидации ответов OCSP (при проверке полей |
|
|
|
Определяет, должны ли запросы к OCSP-ответчикам содержать nonce (уникальное случайное число, которое добавляется в запросы для повышения безопасности). По умолчанию nonce всегда используется и проверяется на соответствие ответу. Если ответчик не использует nonce, директиву следует отключить |
|
Нет |
|
Управляет различными параметрами выполнения SSL на уровне каждого каталога. Обычно, если к каталогу могут применяться несколько параметров |
|
|
|
Определяет способ ввода пароля для расшифровки защищенных закрытых ключей SSL при запуске веб-сервера. По умолчанию используется значение |
|
|
|
Управляет тем, какие версии протокола SSL/TLS будут приниматься при новых соединениях |
|
Нет |
|
Устанавливает файл, в котором можно собрать используемые сертификаты удостоверяющих центров (CA) для аутентификации удаленных серверов. Файл представляет собой конкатенацию различных PEM-кодированных файлов сертификатов в порядке предпочтения. Файл может использоваться альтернативно и/или дополнительно к |
|
Нет |
|
Устанавливает каталог, в котором хранятся используемые сертификаты удостоверяющих центров (CA). Эти сертификаты используются для проверки сертификата удаленного сервера при аутентификации |
|
|
|
Включает проверку отзыва сертификатов (CRL) для используемых удаленных серверов. Должен быть настроен хотя бы один из параметров |
|
Нет |
|
Устанавливает файл, в котором можно собрать списки отзыва используемых сертификатов (CRL) удостоверяющих центров (CA). Эти списки используются для аутентификации удаленных серверов. Файл представляет собой конкатенацию различных PEM-кодированных файлов CRL в порядке предпочтения. Файл может использоваться альтернативно и/или дополнительно к |
|
Нет |
|
Устанавливает каталог, в котором хранятся списки отзыва используемых сертификатов (CRL) удостоверяющих центров (CA). Эти списки используются для отзыва сертификата удаленного сервера при аутентификации |
|
|
|
Устанавливает необходимость проверки, истек ли срок действия сертификата удаленного сервера. Если проверка не проходит, отправляется код состояния |
|
|
|
Настраивает проверку имени хоста для сертификатов серверов, когда |
|
|
|
Определяет набор шифров, доступных для согласования при «SSL-рукопожатии» прокси. Эквивалентна |
|
|
|
Включает/отключает использование SSL/TLS-протокольного движка для прокси. Обычно используется в секции |
|
Нет |
|
Устанавливает файл, в котором хранится цепочка сертификатов для всех используемых клиентских сертификатов. Директива необходима, если удаленный сервер предоставляет список сертификатов CA, которые не являются прямыми подписантами одного из настроенных клиентских сертификатов |
|
Нет |
|
Устанавливает файл, в котором хранятся конкатенированные PEM-кодированные сертификаты и ключи, используемые для аутентификации прокси-сервера |
|
Нет |
|
Устанавливает каталог, в котором хранятся конкатенированные PEM-кодированные клиентские сертификаты и ключи, используемые для аутентификации прокси-сервера |
|
|
|
Управляет версиями протокола SSL, которые |
|
|
|
Управляет проверками сертификата удаленного сервера, когда прокси настроен на пересылку запросов к удаленному SSL-серверу |
|
|
|
Устанавливает максимальную глубину проверки сертификатов CA при валидации сертификата удаленного сервера. Определяет, насколько глубоко |
|
Нет |
|
Настраивает один или несколько источников для инициализации генератора псевдослучайных чисел (PRNG) в OpenSSL во время запуска (контекст — |
|
|
|
Устанавливает размер буфера для SSL-ренегоциации (процесс, при котором клиент и сервер заново устанавливают защищенное SSL/TLS-соединение в рамках уже существующего). Если требуется ренегоциация SSL в контексте по местоположению, например, при использовании |
|
Нет |
|
Задает общее требование доступа, которое должно быть выполнено для его разрешения. Спецификация требований представляет собой произвольное сложное булево выражение, содержащее любое количество проверок доступа. Директива |
|
Нет |
|
Запрещает доступ, если для текущего HTTP-запроса не используется SSL. Удобно для виртуального хоста или каталогов с поддержкой SSL для защиты от ошибок конфигурации, которые могут раскрыть защищаемую информацию. Когда директива присутствует, все запросы, не использующие SSL, отклоняются |
|
|
|
Настраивает тип хранения глобального/межпроцессного кеша SSL-сессий. Этот кеш является необязательным механизмом, который ускоряет обработку параллельных запросов, помогает избежать ненужных «рукопожатий» сессии |
|
|
|
Устанавливает тайм-аут в секундах для информации, хранящейся в глобальном/межпроцессном кеше SSL-сессий, внутреннем кеше памяти OpenSSL и для сессий, возобновляемых с помощью TLS-сессий (RFC 5077). Значение может быть установлено как минимум на |
|
Нет |
|
Настраивает секретный ключ для шифрования и расшифровки TLS-сессионных тикетов, как определено в RFC 5077. В основном подходит для кластерных сред, где информация о TLS-сессиях должна быть разделена между несколькими node. Для одноэкземплярных установок веб-сервера рекомендуется не настраивать файл ключа тикета, а полагаться на (случайные) ключи, генерируемые |
|
|
|
Включает/отключает использование TLS-сессионных тикетов (RFC 5077) |
|
Нет |
|
Устанавливает начальное значение, используемое для подделки параметров пользователя SRP для неизвестных пользователей, чтобы избежать утечки информации о существовании данного пользователя. Если эта директива не используется, веб-сервер вернет клиентам предупреждение |
|
Нет |
|
Включает TLS-SRP и устанавливает путь к файлу проверок OpenSSL SRP (Secure Remote Password), содержащему имена пользователей TLS-SRP, проверки, соли и параметры группы |
|
Нет |
|
Конфигурирует кеш для OCSP-ответов, которые включаются в «TLS-рукопожатие», если включена |
|
|
|
Устанавливает тайм-аут в секундах перед истечением недействительных ответов в кеше OCSP-стаплинга (настраиваемом через |
|
|
|
Включает синтезирование ответа |
|
Нет |
|
Переопределяет URI OCSP-ответчика, полученный из расширения |
|
|
|
Устанавливает тайм-аут для запросов к OCSP-ответчикам, когда включен |
|
|
|
Устанавливает максимально допустимый «возраст» при рассмотрении OCSP-ответов для целей стаплинга, т.е. когда включен |
|
|
|
Устанавливает максимально допустимый временной сдвиг, когда модуль |
|
|
|
Включает передачу клиенту ответов от неудачных OCSP-запросов, связанных со стаплингом, таких как ответы с общим статусом, отличным от |
|
|
|
Устанавливает тайм-аут в секундах перед истечением ответов в кеше OCSP-стаплинга (настраиваемом через |
|
|
|
Устанавливает, разрешено ли клиентам не-SNI (Server Name Indication - расширение протокола TLS, позволяющее серверу предоставлять несколько SSL-сертификатов на одном IP-адресе, определяя нужный сертификат на основе запрошенного клиентом имени хоста) получать доступ к виртуальному хосту на основе имени. Если установлено в |
|
Нет |
|
Устанавливает поле |
|
|
|
Включает OCSP-стаплинг, как определено в расширении TLS «Certificate Status Request», указанном в RFC 6066. Если включено (и запрошено клиентом), модуль |
|
|
|
Устанавливает уровень проверки сертификата для аутентификации клиента. Директива может использоваться как в контексте сервера, так и в контексте каталога. В контексте сервера она применяется к процессу аутентификации клиента, используемому в стандартном «SSL-рукопожатии» при установлении соединения. В контексте каталога она принуждает к SSL-ренегоциации с переопределенным уровнем проверки клиента после чтения HTTP-запроса, но до отправки HTTP-ответа |
|
|
|
Устанавливает максимальную глубину проверки сертификатов CA при аутентификации клиента. Директива может использоваться как в контексте сервера, так и в контексте каталога. В контексте сервера она применяется к процессу аутентификации клиента, используемому в стандартном «SSL-рукопожатии» при установлении соединения. В контексте каталога она принуждает к SSL-ренегоциации с переопределенной глубиной проверки клиента после чтения HTTP-запроса, но до отправки HTTP-ответа |