我一直在寻找一种可靠且可移植的方法来检查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 平台:[...]
令我不愉快的是,没有显示版本字母。没有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在Twitter上)和yum info openssl-libs
检查旧版本的OpenSSL是否仍然存在:
- 它并不完全可靠,但是您可以尝试
lsof -n | grep ssl | grep DEL
。请参阅Heartbleed:如何可靠且可移植地检查OpenSSL版本?为什么这可能对您不起作用。
事实证明,在Ubuntu和Debian上更新OpenSSL软件包并不总是足够的。您还应该更新libssl1.0.0软件包,然后-then-检查是否openssl version -a
指示built on: Mon Apr 7 20:33:29 UTC 2014
。
[root@null~]# openssl version -a OpenSSL 1.0.1e-fips 11 Feb 2013
apt-cache policy openssl
,它的回应是:Installed: 1.0.1-4ubuntu5.12
Ubuntu刚刚为12.04 LTS发布的1.0.1g。我注销并重新登录。我还能做其他验证吗?