Как отключить TLS 1.1 и 1.2 в Apache?

Разрешение на Контейнере Групповой политики (GPC, объект Active Directory) было установлено отклонить Ваше разрешение уровня чтения. Полномочия в файловой системе возражают, что Вы нашли ("Шаблон Групповой политики", или GPT) может "выйти из синхронизации" с полномочиями на объекте Active Directory. (Для некоторого фона взгляните на http://msdn.microsoft.com/en-us/library/aa374180 (По сравнению с 85) .aspx).

К счастью, можно использовать инструмент как ADSIEDIT для восстановления разрешения на GPC. Используя ADSIEDIT Вы найдете соответствие "groupPolicyContainer" GUID проблематичного GPO под объектом "CN=Policies" объекта "CN=System" в Домене NC домена, в котором находится GPO. (Установите ADSIEDIT от Инструментов Поддержки на медиа Windows Server, откройте его, развертка в "Домен", затем "CN=System" и "CN=Policies", и Вы найдете GPC).

Используя вкладку "Security" "Свойств" покрывают для GPC, соответствующего проблематичному GPO, и используют кнопку "Default" в "Усовершенствованном" диалоговом окне для восстановления полномочий по умолчанию.

Если ADSIEDIT не позволит Вам изменять полномочия (вероятно, отображающий чудное сообщение об ошибке как "Недопустимый путь каталога, был передан"), то, вероятно, кто-то поместил, "Отклоняют / Полный контроль" разрешение на объект. dsacls команда с аргументами CN=GUID-OF-THE-PROBLEMATIC-GPO,CN=Policies,CN=System,DC=your,DC=domain,DC=com сообщат полномочия. Ищите ошибочное, "Отклоняют" и запись "ПОЛНОГО КОНТРОЛЯ" и используют /R user-or-group-namme параметр на dsacls удалить полномочия, связанные с тем пользователем или группой. Если это действительно испорчено затем, необходимо будет, вероятно, использовать Windows Server 2008 ADAM / AD версия LDS dscals с /takeownership аргумент для взятия владения объекта).

12
задан 7 June 2013 в 03:01
3 ответа

Заинтригованный этой ошибкой (и да, я смог ее воспроизвести), я взглянул на исходный код последней стабильной версии mod_ssl и нашел объяснение. Потерпите меня, это может вызвать переполнение стека любителями:

Когда SSLProtocol был проанализирован, он приводит к char , выглядящему примерно так:

0 1 0 0
^ ^ ^ ^
| | | SSLv1
| | SSLv2
| SSLv3
TLSv1

При при инициации нового контекста сервера будут включены ВСЕ доступные протоколы, и вышеупомянутый char проверяется с помощью некоторых изящных побитовых операций И, чтобы определить, какие протоколы должны быть отключены . В этом случае, когда SSLv3 является единственным протоколом, который был явно включен, остальные 3 будут отключены.

OpenSSL поддерживает настройку протокола для TLSv1.1, но поскольку SSLProtocol не учитывает эти параметры, он никогда не отключается. OpenSSL v1.0.1 имеет некоторые известные проблемы с TLSv1.2, но если он поддерживается, я полагаю, что то же самое касается и TLSv1.1; он не распознается / не обрабатывается модулем mod_ssl и поэтому никогда не отключается.

Исходный код Ссылки для mod_ssl:

Протокол SSL анализируется в строке 925 в pkg.sslmod / ssl_engine_config.c
Параметры, используемые в приведенной выше функции, определены в строке 444 в pkg.sslmod / mod_ssl.h
Все протоколы включаются в строке 586 в pkg.sslmod / ssl_engine_init.c , после чего определенные протоколы отключается в следующих строках

Как отключить его тогда?

У вас есть несколько вариантов:

  1. Отключить его в файле конфигурации OpenSSL с помощью:
    Protocols All, -TLSv1.1, -TLSv1. 2
  2. Переписать mod_ssl ; -)
22
ответ дан 2 December 2019 в 21:32

Проблема также решается в комментариях на странице mod_ssl Apache. : http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#comment_1136

Если бы в Ubuntu 12.04 был Apache 2.2.23, проблемы бы не было. Согласно комментариям, можно включить TLSv1.1 и TLSv1.2, но тогда также будет включен TLSv1.0:

SSLProtocol All -SSLv2 -SSLv3
2
ответ дан 2 December 2019 в 21:32

Прежде всего, вы должны определить виртуальный хост по умолчанию для порта 443 на вашем сервере (первый виртуальный хост SSL, загруженный Apache) и отредактировать его файл конфигурации. Большинство пользователей имеют на своих серверах файл ssl.conf с настроенным виртуальным хостом для порта 443. Поскольку имя этого файла начинается с «s», он загрузится до vhosts, настроенных в vhosts.conf (который начинается с «v»). Итак, проверьте, действительно ли это ваш случай (ответ «да» практически для всех), и измените протоколы в этом файле . Хватит!

Аналогичная проблема была опубликована здесь: Как отключить TLS 1.1 и 1.2 в Apache? . Согласно HBruijn:

Если у вас нет IP VirtualHosts, на практике настройки из первое появление директивы SSLProtocol используется для всего сервер и / или все виртуальные хосты на основе имен, поддерживающие TLS

И еще здесь: Можно ли установить протокол SSL в Apache для одного VirtualHost (пуделя)? . Согласно vallismortis:

Вы можете установить протокол SSL только для первого VirtualHost в конфигурационный файл. Все последующие записи VirtualHost унаследуют эту настройку из первой записи и молча игнорировать свои собственные настройка из-за ошибки OpenSSL.

Между прочим: vhost по умолчанию на сервере для данного порта - это тот, который отвечает на запросы для этого порта, которые поступают на сервер без идентификации имени сервера (или с неправильное имя сервера). Пример: IP-адрес, введенный в адресной строке вашего браузера, или ошибочное перенаправление, вызванное неверной таблицей DNS.

1
ответ дан 2 December 2019 в 21:32

Теги

Похожие вопросы