IE/wget 混淆子域名的 SSL 证书和主域名的证书的问题

IE/wget 混淆子域名的 SSL 证书和主域名的证书的问题

我正在运行网站其中结帐流程使用 Comodo EV 证书进行 SSL 认证。

我们还在网站上安装了 Piwik 网络分析跟踪,该跟踪通过stats子域提供。为了防止混合域错误,Piwik 可通过 HTTPS 和 HTTP 访问 - 对于 HTTPS,我们的 Piwik 子域使用(便宜得多的)Comodo PositiveSSL 证书进行认证。

奇怪的是,当通过 wget 和某些版本的 Internet Explorer 访问主站点上的 HTTPS 页面时,证书stats.psychicbazaar.com似乎会以某种方式被错误加载,导致 IE 和 wget 中出现“地址不匹配”警告:

ERROR: certificate common name `stats.psychicbazaar.com' doesn't match requested host name `www.psychicbazaar.com'.

使用 curl、Chrome 或 Firefox 不会出现此问题。例如,使用 curl:

$ curl -Iv https://www.psychicbazaar.com/shop/checkout

* <snip>
* Connected to www.psychicbazaar.com (178.79.183.162) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using DHE-RSA-AES256-SHA
* Server certificate:
*    subject: serialNumber=07440589; 1.3.6.1.4.1.311.60.2.1.3=GB; 1.3.6.1.4.1.311.60.2.1.
2=Greater London; businessCategory=Private Organization; C=GB; postalCode=EC24 4RQ; ST=Greater 
London; L=London; street=The Roma Building 32-38; O=Psychic Bazaar Ltd; OU=COMODO EV 
*    start date: 2012-02-16 00:00:00 GMT
*    expire date: 2013-02-15 23:59:59 GMT
*    subjectAltName: www.psychicbazaar.com matched
*    issuer: C=GB; ST=Greater Manchester; L=Salford; O=COMODO CA Limited; CN=COMODO Extended Validation Secure Server CA
*    SSL certificate verify ok.
> HEAD /shop/checkout HTTP/1.1
> User-Agent: curl/7.21.6 (x86_64-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 librtmp/2.3
> Host: www.psychicbazaar.com
> Accept: */*
> 
< <snip>

这里可能发生了什么——为什么浏览器在加载主域上的页面时会读取子域的 SSL 证书并出错?任何帮助非常感谢!

答案1

# dig stats.psychicbazaar.com
[...]
;; ANSWER SECTION:
stats.psychicbazaar.com. 3600   IN      A       178.79.183.162
[...]
# dig www.psychicbazaar.com
[...]
;; ANSWER SECTION:
www.psychicbazaar.com.  3600    IN      A       178.79.183.162
[...]

如果对 TLS 交换使用相同的 IP 地址,那么您的 Web 服务器究竟如何知道要为哪个证书提供 TLS 交换?这行不通:

http://wiki.apache.org/httpd/NameBasedSSLVHosts

通常,不可能在同一个 IP 地址和端口上托管多个 SSL 虚拟主机。这是因为 Apache 需要知道主机的名称才能选择正确的证书来设置加密层。但请求的主机名称仅包含在 HTTP 请求标头中,而 HTTP 请求标头是加密内容的一部分。因此,在协商加密之前,它不可用。

相关内容