由于各种原因,我们在密码选择上必须受到一些限制,而我们不能使用的密码之一是 AES256-GCM-SHA384。
我们可以使用以下命令来证明该密码可用:
$ openssl s_client -cipher AES256-GCM-SHA384 -connect hostname:443
...在 Centos 6.6、OpenSSL 1.0.1e-fips 2013 年 2 月 11 日上运行良好。它连接并显示:
新的 TLSv1/SSLv3,密码为 AES256-GCM-SHA384
它无法在我的 Mac(OpenSSL 0.9.8zd 2015 年 1 月 8 日)或服务器本身(OpenSSL 1.0.1m 2015 年 3 月 19 日(库:OpenSSL 1.0.0d 2011 年 2 月 8 日))上运行,在这两种情况下都会返回如下消息:
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 副本,而不是其他随机副本。
我怀疑我遗漏了一个关键点。有人知道可能发生了什么吗?
答案1
您的 CentOS 服务器上可能安装了两个 OpenSSL。
使用中定义的ldd /usr/local/apache/modules/mod_ssl.so
路径 运行命令。这将返回链接到 的库。它们是否使用与您的系统 OpenSSL 相同的库?mod_ssl.so
httpd.conf
mod_ssl.so
我猜想是您的 Apache 配置为使用与默认系统 OpenSSL 不同的 OpenSSL。这就是为什么 Apache 可以接受密码AES256-GCM-SHA384
,但您使用系统openssl
命令失败的原因。通常,在 OS 安装后执行的 OpenSSL 安装或升级将安装到/usr/local/ssl
库文件夹中/usr/local/ssl/lib
。