我将我的 SSL 网站和证书从 Apache 迁移到 Nginx,从那时起,所有 Windows XP 客户端都无法识别 SSL 证书(它是 Trustico 颁发的通配符证书)。
以前的 Apache 服务器上的旧配置是这样的:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/*_mysite.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/*_mysite.com.key
SSLCertificateChainFile /etc/apache2/ssl/*_mysite.com.ca-bundle
Nginx 服务器上的新配置如下:
ssl on;
ssl_certificate /etc/nginx/ssl/*_mysite.com.crt
ssl_certificate_key /etc/nginx/ssl/*_mysite.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
Nginx 不支持 SSLCertificateChainFile 参数,因此我发现我需要将 *_mysite.com.ca-bundle 文件附加到 *_mysite.com.crt 文件下方。
此后,Windows XP 以外的其他操作系统运行正常,但 Windows XP 仍然识别错误的证书(它返回“证书错误”消息)。
我无法解决这个问题,你能帮助我吗?
答案1
Windows XP 以外的其他操作系统运行良好,但 Windows XP 仍然识别错误的证书。
在这种情况下,您的设置需要服务器名称指示 (SNI)并且在某处您为无法执行 SNI 的客户端配置了另一个证书,例如 XP 上的 MSIE8。
答案2
问题是 Windows XP 上的 IE8 及更早版本不支持 SNI。如果您需要支持 Win XP/IE 8 上的用户,则每个站点都需要自己的专用 IP 地址和相应的 SSL 证书。