Nginx 的错误日志显示了一些 OpenSSL 握手错误,在搜索原因时,我发现所使用的 OpenSSL 版本的输出令人困惑。
Details:
Debian Jessie 8.7 64 Bit
# apt-cache policy openssl
openssl:
Installed: 1.0.1t-1+deb8u6
Candidate: 1.0.1t-1+deb8u6
Version table:
1.0.2k-1~bpo8+1 0
100 http://ftp.debian.org/debian/ jessie-backports/main amd64 Packages
*** 1.0.1t-1+deb8u6 0
500 http://security.debian.org/ jessie/updates/main amd64 Packages
100 /var/lib/dpkg/status
1.0.1t-1+deb8u5 0
500 http://mirror.hetzner.de/debian/packages/ jessie/main amd64 Packages
500 http://http.debian.net/debian/ jessie/main amd64 Packages
# apt-cache policy nginx
nginx:
Installed: 1.9.10-1~bpo8+4
Candidate: 1.10.3-1~bpo8+1
Version table:
1.10.3-1~bpo8+1 0
100 http://ftp.debian.org/debian/ jessie-backports/main amd64 Packages
*** 1.9.10-1~bpo8+4 0
100 /var/lib/dpkg/status
1.6.2-5+deb8u4 0
500 http://mirror.hetzner.de/debian/packages/ jessie/main amd64 Packages
500 http://http.debian.net/debian/ jessie/main amd64 Packages
500 http://security.debian.org/ jessie/updates/main amd64 Packages
# nginx -V
nginx version: nginx/1.9.10
built with OpenSSL 1.0.2j 26 Sep 2016 (running with OpenSSL 1.0.2k 26 Jan 2017)
# openssl version -a
OpenSSL 1.0.1t 3 May 2016 (Library: OpenSSL 1.0.2k 26 Jan 2017)
nginx 如何运行,openssl 1.0.2k
并且 openssl version -a
说“库是”,OpenSSL 1.0.2k
但apt-cache policy openssl
说“已安装” 1.0.1t
?
有人可以解释一下吗?
答案1
这openssl
包包含前端二进制文件,而不是库。您正在跟踪 Jessie 的该软件包(及其安全更新)。
图书馆本身是libssl1.0.0
,并且您正在跟踪该软件包的 Jessie 向后移植(以及 Nginx;您只是后者落后几个版本)。这是Nginx使用的,是前端识别的库版本openssl
。您可以使用以下命令查看系统上库的版本
apt-cache policy libssl1.0.0
(以及更新版本的可用性,如果有的话)。
答案2
我怀疑它nginx -V
显示了使用哪个版本的 openssl 来构建内核,并且它还向您显示了它正在使用的系统上的版本。