我正在寻找一种可靠且可移植的方法来检查 GNU/Linux 和其他系统上的 OpenSSL 版本,这样用户可以很容易地发现他们是否应该因为 Heartbleed 错误而升级他们的 SSL。
我认为这很容易,但我很快在 Ubuntu 12.04 LTS 上遇到了最新的 OpenSSL 1.0.1g 问题:
openssl 版本 -a
我期待看到一个完整的版本,但我得到了这个:
OpenSSL 1.0.1 2012 年 3 月 14 日 建立在:2013 年 6 月 4 日星期二 07:26:06 UTC 平台: [...]
令我不快的是,版本字母没有显示。没有 f,没有 g,只有“1.0.1”,就是这样。列出的日期也无助于发现(非)易受攻击的版本。
1.0.1 (af) 和 1.0.1g 之间的区别至关重要。
问题:
- 检查版本的可靠方法是什么,最好是跨发行版?
- 为什么版本字母没有首先显示?除了 Ubuntu 12.04 LTS,我无法在其他任何东西上测试它。
其他人也在报告这种行为。几个例子:
- https://twitter.com/orblivion/status/453323034955223040
- https://twitter.com/axiomsofchoice/status/453309436816535554
一些(特定于发行版的)建议滚滚而来:
- Ubuntu 和 Debian:
apt-cache policy openssl
和apt-cache policy libssl1.0.0
. 将版本号与此处的软件包进行比较:http ://www.ubuntu.com/usn/usn-2165-1/ - Fedora 20:(
yum info openssl
感谢推特上的@znmeb)和yum info openssl-libs
检查旧版本的 OpenSSL 是否仍然存在:
- 它并不完全可靠,但您可以尝试
lsof -n | grep ssl | grep DEL
. 请参阅Heartbleed:如何可靠且可移植地检查 OpenSSL 版本?为什么这可能不适合你。
事实证明,在 Ubuntu 和 Debian 上更新 OpenSSL 包并不总是足够的。您还应该更新 libssl1.0.0 包,然后检查是否openssl version -a
指示built on: Mon Apr 7 20:33:29 UTC 2014
。