Отключение RC4 в наборе шифров SSL сервера Apache

пожалуйста, посмотрите разделы редактирования в моем собственном ответе; они содержат объяснение этой головоломки.

Я пытаюсь отключить RC4 для сервера Apache 2.2.9, работающего на CentOS 6.5 VPS, и я не могу добиться успеха.

недавно приобретенный сертификат Бизнес-проверки установлен и SSL-соединения работают нормально, но я хотел, чтобы настроить вещи, как можно лучше, чтобы "упрочнить безопасность", как некоторые учебники положить его.

проверка конфигурация с лабораториями Qualys SSL, страница результатов показывает "этот сервер принимает шифр RC4, который является слабым. Класс вершины Б."

тем не менее, я поставил это в ssl.conf:

 SSLCipherSuite HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!SSLv2:!SSLv3

Я сохранил скрипт, данный в ответе на этот вопрос в файле с именем test-ssl-ciphers.sh и изменил IP-адрес на петлевой адрес. Это результат ./test-ssl-ciphers.sh | grep -i "RC4":

Testing ECDHE-RSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ECDHE-ECDSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing AECDH-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ADH-RC4-MD5...NO (sslv3 alert handshake failure)
Testing ECDH-RSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ECDH-ECDSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing RC4-SHA...NO (sslv3 alert handshake failure)
Testing RC4-MD5...NO (sslv3 alert handshake failure)
Testing RC4-MD5...NO (sslv3 alert handshake failure)
Testing PSK-RC4-SHA...NO (no ciphers available)
Testing KRB5-RC4-SHA...NO (no ciphers available)
Testing KRB5-RC4-MD5...NO (no ciphers available)
Testing EXP-ADH-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-KRB5-RC4-SHA...NO (no ciphers available)
Testing EXP-KRB5-RC4-MD5...NO (no ciphers available)

каждая из этих строк содержит "нет", которое, согласно сценарий, означает, что сервер не поддерживает указанную комбинацию шифра.

кроме того, команда grep -i -r "RC4" /etc/httpd дает мне только вышеупомянутый ssl.файл conf.

кроме того, под управлением openssl ciphers -V на моем наборе шифров не показывает RC4 шифров вообще, что имеет смысл, учитывая строку конфигурации.

поэтому я как-то потерял, почему веб-сайты проверки SSL говорят мне, что "сервер принимает RC4". Они даже перечисляют следующие шифры как принято:

TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA

у кого-нибудь есть объяснение? Что я делаю что-то не так? Может быть, есть другое место, где будет настроена поддержка RC4 или "принятие"?

спасибо.

[EDIT] используя CentOS 6.6 в виртуальной машине дома, я снова запустил скрипт против моего VPS, используя его доменное имя вместо адреса обратной связи. Эта установка подразумевает, что список шифров предоставляется экземпляром openssl в VM: I все еще не имеют RC4 среди шифров, которые дают да.

10
задан AbVog
19.05.2023 9:22 Количество просмотров материала 2852
Распечатать страницу

5 ответов

при установке обновленного сертификата, я обнаружил, что проблема была вызвана задание (для домена и для каждого поддомена) в ISPConfig весь набор данных, необходимых для HTTPS: сертификат, закрытого ключа, цепочке сертификации и т. д.

иначе говоря, удаление набора данных привело к тесту Qualys для оценки домена A и в то же время удалить предупреждения о RC4. Собираем детали обратно приводит к предупреждениям и класс снова ограничен Б , что не оставляет места сомнениям относительно причинно-следственной связи.

это как если бы предоставление подробностей для каждого vhost каким-то образом создало новую среду, в которой некоторые значения по умолчанию переопределили набор шифров, который я указал в ssl.конф. Сверхъестественный.

решение состоит в том, чтобы добавить спецификацию SSLCipherSuite в директивах Apache textarea для каждого vhost. Это то, что у меня есть в конфигурации, которая дает мне оценку A:

SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder on
# Compression is disabled by default on my distribution (CentOS 6)
# SSLCompression off 
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

EDIT (2017-05-16): An дополнительная информация об этой проблеме: указание SSLCipherSuite является обязательным. Я не могу понять, почему эта конкретная директива, хотя и указана на уровне сервера, автоматически не применяется к конфигурациям виртуальных хостов. Я запускаю Apache 2.2.15 на CentOS 6.9.

EDIT (2018-06-18): больше информации. Я только что обнаружил, что директива SSLCipherSuite может быть указана только один раз, и она будет применяться ко всем виртуальным хостам: в базовом файле конфигурации mod_ssl (на CentOS 6, файл найден в /etc/httpd/conf.d/ssl.conf), вы просто должны установить его за пределами виртуального хоста по умолчанию. В Apache 2.2 документации говорится, что по умолчанию эта директива SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP. Я считаю, что именно отсюда исходит шифр RC4: при отсутствии какой-либо спецификации, что имело место для меня, поскольку никакой спецификации не было в "глобальном" контексте, применяется значение по умолчанию. Это понимание заканчивает то, что было для меня загадкой. По иронии судьбы, я переключитесь на CentOS 7, когда я найду это объяснение! ХТ.

15
отвечен AbVog 2023-05-20 17:10
SSLCipherSuite HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!SSLv2:!SSLv3
                                                                    ^^^^^^^

плохая идея. Отключение всех шифров SSLv3 приводит к отключению шифров, используемых с TLS1.0 и TLS1.1 и оставляет только несколько шифров, недавно введенных с TLS1.2 (Если ваш сервер поддерживает TLS1.2)

поэтому я как-то потерял, почему веб-сайты проверки SSL говорят мне, что "сервер принимает RC4". Они даже перечисляют следующие шифры как принятые:

убедитесь, что локальные и внешние тесты имеют одинаковый доступ сервер (IP-адрес). Я видел много сайтов, где example.com на другой хост, чем www.example.com и поэтому тесты отличаются.

5
отвечен Steffen Ullrich 2023-05-20 19:27

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

Я также нашел более красивый скрипт здесь это дает более подробную информацию о тестах SSL.

2
отвечен Geoff 2023-05-20 21:44

просто просматривал это для одного из моих сайтов. На основе ответа @AbVog я обнаружил, что мои директивы были фактически только внутри vhost по умолчанию. Когда я перенес директивы в глобальный контекст, все было хорошо.

в стороне я тоже наткнулся https://cipherli.st/ который имеет хороший список конфигурации SSL для множества разных пакетов. Текущая рекомендация для apache следующая:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

# Requires Apache >= 2.4
SSLCompression off 
SSLSessionTickets Off
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 
2
отвечен boyvinall 2023-05-21 00:01

на моей Fedora 25 с Apache/2.4.25 шифры обрабатываются крипто-политиками (см. /etc/cryptopolicies/backends). Настройка по умолчанию имеет RC4 полностью отключен, так что нет необходимости фальсификации с шифрами в установке Apache. За исключением того, что вы используете последнюю версию ssl.conf как это не установлено по умолчанию, но оставлено как ssl.конф.rpmnew в конф.каталог д'.

для того, чтобы настроить SSL я просто должен был указать сертификаты, Имя_сервера и DocumentRoot. Для В то время это.

SSLCertificateFile /etc/letsencrypt/live/mail.xxxx.dk/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mail.xxxx.dk/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/mail.xxxx.dk/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/mail.xxxx.dk/fullchain.pem
ServerName mail.xxxx.dk:443
DocumentRoot "/usr/share/squirrelmail"
0
отвечен John Damm Sørensen 2023-05-21 02:18

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх