技术, SSL, 微信

微信小程序在安卓上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 证书的私钥
您已成功订阅 HADB.ME
真棒!下一步,完成结账以便解锁 HADB.ME
欢迎回来!您已登录成功。
登录失败,请重试。
操作成功!您的账户已全面激活,现在您有所有内容的权限了。
错误!Stripe 结账失败。
成功!您的账单信息已更新。
错误!账单信息更新失败。