遇到一个奇怪的问题——给二级域名 a.xxx.com 配好了 https,架设在 nginx 里,在电脑上正常访问,但在 iPhone 上却提示无法验证证书。可是,
- 0次
- 2021-05-26 16:02:43
- idczone
可是我另外一个二级域名 b.xxx.com 使用的同样的证书,架设在 IIS 上,却在电脑和 iPhone 上均能能正常访问。
实在不知道如何解决了。
附上nginx配置文件
===========
server {
listen 443 ssl;
server_name a.xxx.com;
ssl on;
ssl_certificate conf.d/1.crt;
ssl_certificate_key conf.d/1.key;
location / {
proxy_pass http://127.0.0.1:5001 ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off抗投诉服务器;
}
}
应该是证书链不完整
十有八九
的确是证书链的问题,把链证书加上就好了。
不过,我在IIS里配置证书的时候,是没有添加证书链的,但在各个平台却能正常使用,难道IIS会自动补全证书链?
IIS中应该信任了证书的中间签发商,毕竟微软有Windows,其附属的信任列表也应该添加到其产品中了。至于Nginx,单纯的轻量,完全依赖配置,因此需要完整的证书链。个人猜想,仅供参考~
现在 Chrome 会自动补全证书链
补全证书链是浏览器进行的
NGINX环境
是浏览器支持的关系。电脑浏览器都自带证书链,手机端一般没有,所以服务端如果证书链不完整在电脑上访问是没问题的,但是在手机上就会出错。
但我在IIS里,没有使用证书链,发布的站点,在iPhone里面显示正常。
Windows自己会自动补全证书链的。
我之前用Wosign的证书,开始显示上级证书是StartCom的。
过一会再打开看上级证书就是WoSign自己的了。
如8楼所说,可能是windows自动补全了,我没用过IIS,不了解。至少我用Nginx的时候是必须自己提供完整证书链的