zoukankan      html  css  js  c++  java
  • 记录一个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文件里面,在原文件内容下面直接编辑添加即可。

    此时再用上面检测完整性的网站来检测,3个证书就都正常了。

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

  • 相关阅读:
    基于 Eclipse 平台的代码生成技术
    mshta命令用法示例(在dos命令弹出消息框)
    opengl绘制正弦曲线
    决策树学习过程中的额外收获---三叉树建立
    C++链表
    java web工程之Hibernate
    Hibernate配置文件学习心得
    TinyMCE在线编辑器使用方法初探
    待修改
    选择问题
  • 原文地址:https://www.cnblogs.com/00986014w/p/12614564.html
Copyright © 2011-2022 走看看