今天在做小程序的过程中使用HTTPS请求数据时,遇到安卓机型无法获取到数据
微信小程序wx.request:fail ssl hand shake error
通过一系列的排查,发现是因为ssl证书的问题,后来通过https://www.myssl.cn/tools/check-server-cert.html检查发现缺少中间证书:
原因:因为给客户使用的是宝塔面板,宝塔面板在安装SSL证书时漏掉了中间证书,只安装了根证书和密钥。
方法一:
从SSL证书厂商下载下来的有三个文件
分别为:1_root_bundle.crt、2_app.bajiege.com.crt、3_app.bundle.key
把2_app.bajiege.com.crt通过编辑器复制出来的代码放到宝塔的“证书(PEM格式)”框内,然后再把1_root_bundle.crt文件复制出来的代码放到2_app.bajiege.com.crt的代码下方,把3_app.bajiege.com.key代码放到“密钥(KEY)”框内。
或者直接使用Nginx合并好的证书。
方法二:
从SSL证书厂商下载下来的有三个文件,通过编辑器打开证书文件(1_root_bundle.crt文件不需要打 开),获取出类似以下代码输入到宝塔面板当中。
1 2 3 4 5 6 7 8 9 10 11 12 | -----BEGIN CERTIFICATE----- MIIGGzCCBQOgAwIBAgIQSm6VLdqpyN6Z1bVGi7VlxTANBgkqhkiG9w0BAQsFADBE MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMU R2VvVHJ1c3QgU1NMIENBIC0gRzMwHhcNMTcwMzIwMDAwMDAwWhcNMTgwMzIwMjM1 OTU5WjCBljELMAkGA1UEBhMCQ04xEjAQBgNVBAgMCeS6keWNl+ecgTESMBAGA1UE hkiG9w0BAQsFAAOCAQEAxPrtZSupcB023kuF+niygPhgMc+0r6YyZMvUjpdkZuy+ VrLqRlz4G9YPNFBnt2H/YsnzoCnTRBbCrKHiBZk3OauTVfFxlJa1vckMkIWTv0YF Cv9Et88W1GkEaRzvv1QTkxh0xAmOGgCNeAYwSk6bn8vFYp9Ymt2iAOFg/sJvJwML XW5wOewI+55pKUKiHdaIw93rIA7XxtHbVDf6VHIwmbN70lkc+6kC3wYiX/4U5KJp xvYGPWV01Ww7dbxClHmoJXL24phWkjAzBkp/eqEyBr4HioVfvg1PcWMGnRej5yMK Qf0lnAOYk8YyYV2wXesIboM+kN3eI9O/FD8NViO0pg== -----END CERTIFICATE----- |
上传中间证书:
通过修改宝塔面板的虚拟主机配置文件增加了中间证书,在SSLCertificateKeyFile下另起一行,填入:
1 | SSLCertificateChainFile etc/letsencrypt/live/XXXX.com/1_root_bundle.crt |
宝塔虚拟主机配置文件:
1 2 | Apache:/www/server/panel/vhost/apache/XXX.com.conf Nginx :/www/server/panel/vhost/nginx/XXX.com.conf |
到此重新请求数据,OK。