记录一个ssl证书引发的诡异问题

Posted 右威卫大将军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一个ssl证书引发的诡异问题相关的知识,希望对你有一定的参考价值。

最近公司开发的一个小程序刚刚上线,之前部署在公有云上,后来想要向私有云迁移。结果迁移后,发现苹果手机和微信PC端都可以正常访问,唯独安卓手机不能。而这个问题在公有云上却没有发生。

这个问题,首先想到的是公司的网络策略是否限制了部分ip的访问;其次想到公有云和私有云部署的版本是否有差异。兜兜转转调试了大约一个星期,最终发现问题竟然出在证书上!

一、证书完整性检测

配置在网关上的crt和rsa证书是我用ssl相关命令自己将公司的pfx格式转换成的,而在执行过程中,不可避免地缺失了中间证书这一步(因为我对证书确实不太熟悉,何况nginx代理又没有相关配置项)。。。

下面这个网站是用来检测证书完整性的:

https://www.myssl.cn/tools/check-server-cert.html

如果没有配置中间证书,证书2就会显示“错误:服务器缺少中间证书”。安卓系统对证书的要求比苹果系统严格,因此没有中间证书的话在苹果系统可以通过,在安卓系统就不行。

二、生成中间证书

中间证书在线生成即可。在下面的网站将crt文件内容粘贴下来,就可以下载对应的中间证书:

https://www.myssl.cn/tools/downloadchain.html

三、将中间证书配置到nginx上

这里也是查了不少资料,最后看到了这一篇文章:

https://www.jianshu.com/p/89252f8ba0f6

将中间证书的内容直接粘贴到crt文件里面,在原文件内容下面直接编辑添加即可。

之后,重载nginx配置,安卓手机就能正常访问了!

以上是关于记录一个ssl证书引发的诡异问题的主要内容,如果未能解决你的问题,请参考以下文章

网站ssl证书有啥用

SSL证书是什么?为什么需要SSL证书?

为啥我的SSL证书验证失败

Liberty SSL证书密钥不再起作用

如何在我的 Android 应用程序中更新 SSL 证书?

ssl证书