开发工具上和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 | 证书的私钥 |