Назад | Перейти на главную страницу

OpenSSL может согласовать шифр, который не поддерживается

Мы должны быть немного ограничены в выборе шифров по разным причинам, и один из шифров, который мы не можем использовать, - AES256-GCM-SHA384.

Мы можем доказать, что этот шифр доступен с помощью этой команды:

$ openssl s_client -cipher AES256-GCM-SHA384 -connect hostname:443

... который отлично работает на Centos 6.6, OpenSSL 1.0.1e-fips 11 февраля 2013 г. Он подключает и отображает:

Новый, TLSv1 / SSLv3, шифр AES256-GCM-SHA384

Он не работает с моего Mac (OpenSSL 0.9.8zd 8 января 2015 г.) или с самого сервера (OpenSSL 1.0.1m 19 марта 2015 г. (Библиотека: OpenSSL 1.0.0d 8 февраля 2011 г.)), в обоих случаях возвращается сообщение типа :

38200: ошибка: 1410D0B9: подпрограммы SSL: SSL_CTX_set_cipher_list: нет совпадения шифров: /SourceCache/OpenSSL098/OpenSSL098-52.20.2/src/ssl/ssl_lib.c: 1223

То, что соединение с Centos работает, меня сбивает с толку, потому что запуск его на сервере (Solaris):

$ openssl ciphers | sed "s/:/\\n/g" | grep -i gcm

... создает пустой список, как будто шифров GCM не существует. Та же команда в установке Centos отображает несколько вариантов.

Экземпляр Apache использует копию OpenSSL, на которую я смотрю, а не какую-то другую случайную.

Я подозреваю, что упускаю ключевой момент. Кто-нибудь знает, что может происходить?

У вас, вероятно, есть две установки OpenSSL на вашем сервере CentOS.

Запустите команду ldd /usr/local/apache/modules/mod_ssl.so используя путь к mod_ssl.so определено в вашем httpd.conf. Это вернет библиотеки, связанные с mod_ssl.so. Используют ли они те же библиотеки, что и ваша система OpenSSL?

Я предполагаю, что ваш Apache настроен на использование OpenSSL, отличного от OpenSSL системы по умолчанию. Вот почему Apache может принимать AES256-GCM-SHA384 шифр, но ваше использование системы openssl команда не работает. Часто установки или обновления OpenSSL, выполняемые после установки ОС, устанавливаются на /usr/local/ssl с папкой библиотеки в /usr/local/ssl/lib.