如果我访问这个 URLhttps://solarpaces2014.pse.de/typo3/fileadmin/template/images/banner.jpg去寻找 SSL 证书,然后我看到了我们域名的有效(通配符)证书pse.de
。
如果我访问此 URL https://85.214.107.230/img/common/globe.png
(相同的 IP),则浏览器会抱怨 a) 证书已过期,b) 它是自签名的。没关系,这是 plesk 管理站点的证书,除了我们的管理员之外,没有人会使用此站点。
如果我感染这些文件,就会curl
发生以下情况:
$ curl https://solarpaces2014.pse.de/typo3/fileadmin/template/images/banner.jpg > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 90217 100 90217 0 0 16960 0 0:00:05 0:00:05 --:--:-- 319k
$ curl https://85.214.107.230/img/common/globe.png > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
....
curl
正如预期的那样,对第一个证书很满意,但对第二个证书有所抱怨。
但是,当我做同样的事情时wget
:
$ wget https://solarpaces2014.pse.de/typo3/fileadmin/template/images/banner.jpg -O /dev/null
--2014-08-13 15:20:44-- https://solarpaces2014.pse.de/typo3/fileadmin/template/images/banner.jpg
Resolving solarpaces2014.pse.de... 85.214.107.230
Connecting to solarpaces2014.pse.de|85.214.107.230|:443... connected.
ERROR: cannot verify solarpaces2014.pse.de’s certificate, issued by “/C=US/ST=Virginia/L=Herndon/O=Parallels/OU=Parallels Panel/CN=Parallels Panel/[email protected]”:
Self-signed certificate encountered.
ERROR: certificate common name “Parallels Panel” doesn’t match requested host name “solarpaces2014.pse.de”.
To connect to solarpaces2014.pse.de insecurely, use ‘--no-check-certificate’.
为什么会wget
获取错误的证书?这是个wget
问题还是我们的 Apache 配置有问题?
答案1
快速搜索显示,支持 TLS 服务器名称指示(信噪比),这正是您所需要的,它是在 wget 版本 1.14 中引入的。
Curl 很早就包含了 SNI 支持。
例如 RHEL/CentOS 6 包含 wget 版本 1.12 和 Debian wheezy 1.13,所以我预计它们尚不支持 SNI。