Мы должны быть немного ограничены в выборе шифров по разным причинам, и один из шифров, который мы не можем использовать, - 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
.