我将我的 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.crt 下附加 *_mysite.com.ca-bundle 文件。
在此之后,除 Windows XP 之外的其他操作系统都可以正常工作,但 Windows XP 仍然识别出错误的证书(它返回“证书错误”消息)。
我无法解决这个问题,你能帮帮我吗?
在这种情况下,您的设置需要服务器名称指示 (SNI),并且您在某处为无法执行 SNI 的客户端配置了另一个证书,例如 XP 上的 MSIE8。
问题是 Windows XP 上的 IE8 和更早版本不支持 SNI。如果您需要在 Win XP/IE 8 上支持用户,每个站点都需要自己的专用 IP 地址和相应的 SSL 证书。