https配置与安卓访问https失败,错误:fail ssl hand shake error

最近又遇到一个安卓访问有问题,苹果和电脑访问正常的现象;安卓访问https失败,错误:fail ssl hand shake error。

对于这个奇葩的错误,就之前的经验,只能反思是否是证书配置错误。网上有遇到过的,但是都么有给出修改方式。

后来找到了两个检测工具:

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

https://www.ssllabs.com/ssltest/analyze.html

通过这两种检测工具检测后,基本就知道是什么原因了,要么是协议配置不支持,要么是证书缺失。

我们遇到的情况就是中间证书缺失,当时申请的时候按照旧的方式去申请,会生成两个.cer文件。

需要将:ovroot.cer中间证书copy出来贴到server.cer证书的后面,问题就解决了。

附带Nginx的ssl配置手册:

一、证书整理

ovroot.cer文件为服务商中间证书,server.cer为服务证书,需要将两个证书并使用,否则会出现安卓无法访问,会出现fail ssl hand shake error这个错误。

将ovroot.cer的证书复制出来贴到server.cer内容后面,不要有空行;

二、Nginx的配置如下:

    server {

        listen 443;

        server_name spdwechat.ctyun.cn;      #对应的主机域名

        ssl on;

        ssl_certificate yun_cert/server.cer;//证书目录

        ssl_certificate_key yun_cert/server.key;  #私钥

        ssl_session_timeout 5m;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

        ssl_prefer_server_ciphers on;

        location / {

            proxy_pass http://cpsapi;    #实际的程序监听地址

            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_set_header X-Forwarded-Proto  $scheme;

        }

        access_log /server/logs/nginx/cps_rest_access.log main;

    }

要支持TLSv1.2协议;

你可能感兴趣的:(https配置与安卓访问https失败,错误:fail ssl hand shake error)