OpenSSL 能够协商不受支持的密码

OpenSSL 能够协商不受支持的密码

由于各种原因,我们在密码选择上必须受到一些限制,而我们不能使用的密码之一是 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.sohttpd.confmod_ssl.so

我猜想是您的 Apache 配置为使用与默认系统 OpenSSL 不同的 OpenSSL。这就是为什么 Apache 可以接受密码AES256-GCM-SHA384,但您使用系统openssl命令失败的原因。通常,在 OS 安装后执行的 OpenSSL 安装或升级将安装到/usr/local/ssl库文件夹中/usr/local/ssl/lib

相关内容