微信小程序在安卓上SSL报错的问题

开发工具上和iOS真机上访问api都是正常的,在安卓上提示如下错误:

request:fail ssl hand shake error

尝试在安卓的浏览器中访问api地址,提示“该证书并非来自可信的授权中心”,于是感觉应该是SSL证书的问题。

SSL证书是通过Let's Encrypt申请的,部署在阿里云SLB上。

通过https://www.ssllabs.com/ssltest/index.html 测试,TLS1.0、TLS1.1、TLS1.2都是支持的,但有如下提示

This server's certificate chain is incomplete. Grade capped to B.

于是重新查看了下Let's Encrypt生成的证书文件,想起来在阿里云SLB的证书填写的是cert.pem的内容,没有包含中间证书。于是重新填写fullchain.pem里的内容,问题解决。

下面是Let's Encrypt生成的证书文件及其内容:

文件名 内容
cert.pem 服务端证书
chain.pem 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
fullchain.pem 包括了cert.pem和chain.pem的内容
privkey.pem 证书的私钥