Рейтинг:0

Apache не использует конфигурацию директивы SSLProtocol и SSLCipherSuite

флаг ne

Я пытаюсь настроить HTTPS на своем веб-сервере. у меня ошибка Код ошибки: SSL_ERROR_NO_CYPHER_OVERLAP в фаерфоксе и ERR_SSL_VERSION_OR_CIPHER_MISMATCH в хром. Я посмотрел и обнаружил, что мои протоколы или шифры SSL не поддерживаются. Тест в ssllab (https://www.ssllabs.com/ssltest/) привело кНе поддерживается безопасный протокол. Тест GeekFlare TLS (https://gf.dev/tls-тест) говорит, что ни один из протоколов TLS не включен. Я также тестировал с помощью nmap --script ssl-enum-ciphers -p 443 mydomain.com и получить этот результат

Начиная с Nmap 7.91 ( https://nmap.org ) 09.11.2021 11:23 WIB
Отчет о сканировании Nmap для mydomain.in-addr.arpa (mydomain)
Хост работает (задержка 0,0079 с).
ГОСУДАРСТВЕННАЯ СЛУЖБА ПОРТА
443/tcp открыть https
| SSL-перечисление-шифры: 
| TLSv1.0: 
| шифры: 
| TLS_DH_anon_WITH_AES_256_CBC_SHA — F
| компрессоры: 
| НОЛЬ
| предпочтение шифра: неопределенное
| ошибка предпочтения шифра: поддерживается слишком мало шифров
| предупреждения: 
| Прямая секретность не поддерживается ни одним шифром
| TLSv1.1: 
| шифры: 
| TLS_DH_anon_WITH_AES_256_CBC_SHA — F
| компрессоры: 
| НОЛЬ
| предпочтение шифра: неопределенное
| ошибка предпочтения шифра: поддерживается слишком мало шифров
| предупреждения: 
| Прямая секретность не поддерживается ни одним шифром
| TLSv1.2: 
| шифры: 
| TLS_DH_anon_WITH_AES_256_CBC_SHA — F
| компрессоры: 
| НОЛЬ
| предпочтение шифра: неопределенное
| ошибка предпочтения шифра: поддерживается слишком мало шифров
| предупреждения: 
| Прямая секретность не поддерживается ни одним шифром
|_ наименьшая сила: F

Nmap выполнен: 1 IP-адрес (1 хост включен) просканирован за 2,67 секунды.

По сути, ни один из протоколов и шифров, которые я использовал в конфигурациях ssl, не использовался.. Я получаю тот же результат даже после смены протоколов и использования определенного шифра.

Я использую Centos 8, Apache 2.4.37 и Openssl 1.1.1g.

Это мой последний протокол ssl и настройка шифрования:

Протокол SSL все -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Я установил их во всех известных мне конфигурациях ssl, которые содержат SSLProtocol и SSLCipherSuite на моем сервере:

/etc/httpd/conf.d/ssl.conf

/etc/httpd/conf.d/mydomain.conf

/etc/letsencrypt/options-ssl-apache.conf

Редактировать

шифры openssl -s -v показывает


TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=любой Au=любой Enc=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=любой Au=любой Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=любой Au=любой Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-ECDSA-AES256-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(256) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-ECDSA-AES256-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
ECDHE-RSA-AES256-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
AES256-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(256) Mac=AEAD
AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
AES128-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(128) Mac=AEAD
AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
DHE-RSA-AES256-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(256) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(128) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1

openssl s_client -connect server_public_IP:443 возвращается

ПОДКЛЮЧЕН(00000003)
140639468660544: ошибка: 14094410: подпрограммы SSL: ssl3_read_bytes: ошибка рукопожатия предупреждения sslv3: ssl/record/rec_layer_s3.c:1544: номер предупреждения SSL 40
---
нет доступного однорангового сертификата
---
Имена ЦС сертификата клиента не отправлены
---
Рукопожатие SSL прочитало 7 байт и записало 301 байт
Проверка: ОК
---
Новый, (НЕТ), Шифр ​​(НЕТ)
Безопасное повторное согласование НЕ поддерживается
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
Предварительные данные не были отправлены
Подтвердите код возврата: 0 (хорошо)
---

Я много раз пробовал другой протокол TLS и шифр, и каждое сделанное мной изменение ничего не давало.

Я что-то пропустил?

Возможно, есть другой файл конфигурации, который переопределяет конфигурацию?

Любая помощь приветствуется, спасибо

флаг br
У вас есть раздел `ssl_conf` в общесистемном конфигурационном файле openssl (я полагаю, `/etc/pki/tls/openssl.cnf` в CentOS). Если это так, это может ограничивать ваш выбор шифров. Кроме того, `openssl -s -v` перечисляет все/некоторые/любые из выбранных вами наборов шифров?
actomobile avatar
флаг ne
@garethTheRed это ssl_conf внутри openssl.cnf ```ssl_conf = ssl_module```. что я должен изменить, чтобы исправить это?. ``openssl ciphers -s -v`` действительно содержит выбранные мной наборы шифров
флаг br
Временно закомментируйте это и посмотрите, поможет ли это. Кроме того, `openssl ciphers -s -v` необходимо перечислить шифры, которые приемлемы для вашего сервера __и__ предлагаемые клиентом, а не только первые.
actomobile avatar
флаг ne
@garethTheRed Комментарии не помогли. Те же результаты. Эти шифры взяты из генератора конфигурации Mozilla ssl, я предполагаю, что он должен их принять. Также есть строка ```.include /etc/crypto-policies/back-ends/opensslcnf.config`` в ```openssl.cnf```. этот файл также имеет раздел CipherSuite. Может быть, это также переопределяет конфигурацию?
actomobile avatar
флаг ne
Нет, изменение CipherSuites в ```/etc/crypto-policies/back-ends/opensslcnf.config``` не сработало.
флаг br
Вы можете начать использовать Wireshark или tcpdump для мониторинга сервера и посмотреть, какие шифры предлагаются во время рукопожатия. Другой вариант — использовать разные клиенты (например, `openssl s_client`), чтобы проверить, подключается ли он, и даже попробовать базовый сервер с `openssl s_server`, чтобы увидеть, разрешает ли он соединения. Эти инструменты должны помочь вам сузить круг проблем.
actomobile avatar
флаг ne
@garethTheRed `openssl s_server` возвращает различные ошибки о том, что какой-то файл сертификата не существует. После создания указанных файлов ошибка отсутствующих файлов не появлялась, вместо этого я получил «140638281008960: ошибка: 0909006C: подпрограммы PEM: get_name: нет стартовой строки: crypto/pem/pem_lib.c: 745: Ожидание: ЛЮБОЙ ЧАСТНЫЙ КЛЮЧ». но я не знаю, в каком файле должна быть строка PRIVATE KEY
флаг br
Если вы посмотрите на справочную страницу для s_server, вы увидите, что ему нужен закрытый ключ. Он может быть встроен в сертификат (передается как `-cert`) или в другой файл, передаваемый как `-key`. Закрытый ключ будет создан при создании сертификата.
actomobile avatar
флаг ne
@garethTheRed добавление `-cert` и `-key` работает. Команда возвращает «Используя временные параметры DH по умолчанию». ПРИНЯТЬ`. Я предполагаю, что причина, по которой nmap показывает только шифр «TLS_DH_anon_WITH_AES_256_CBC_SHA — F», заключается в том, что openssl использует параметры DH? Если да, то как я могу это изменить?
флаг br
Если вы снова запустите его с опцией `-www` (нижний регистр), а затем наведете на него браузер, он перечислит шифры, на которые он способен, и шифры, общие для него и браузера. Это может вам помочь. Кроме того, каков ваш алгоритм открытого ключа? В списке в вашем вопросе в качестве приемлемых ключевых алгоритмов указаны только RSA и ECDSA - я полагаю, вы используете один из них?
actomobile avatar
флаг ne
@garethTheRed Я использую RSA в качестве ключевого алгоритма (я думаю). Я вот думаю может проблема кроется во внешней сети? Использование локального IP-адреса при запуске `nmap` или `s_client` на сервере работает нормально, и шифры перечислены. Но когда я использую общедоступный IP-адрес сервера, результаты такие же, как и ошибки выше.
actomobile avatar
флаг ne
Если я остановлю службу httpd, у меня будет другая ошибка, когда я попытаюсь получить доступ к Интернету, используя http и https. http возвращает «Соединение было сброшено», в то время как https по-прежнему возвращает то же самое «NO_CYPHER_OVERLAP». разве они не должны иметь ту же ошибку?
флаг br
Затем у вас есть что-то еще, что отвечает. Запустите `netstat -tlnp` или `ss -tlnp` (оба как root), чтобы увидеть, что прослушивает эти порты.
actomobile avatar
флаг ne
@garethTheRed Похоже, это так. Но только httpd слушает порт. Когда я останавливаю его, средство проверки открытых портов показывает, что порт все еще открыт, несмотря на то, что порт ничего не прослушивает. Возможно, проблема действительно вне моего сервера.
actomobile avatar
флаг ne
@garethTheRed Я нашел проблему! Оказывается, это было из-за того, что порт просто не перенаправлялся, и что-то действительно его прослушивало. Я никогда не думал об этом, поскольку он был открыт в программе проверки открытых портов, поэтому я думал, что он уже был перенаправлен. Спасибо за вашу помощь!
Рейтинг:1
флаг ne

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.