首页 > 工具箱 > 证书链下载

证书链下载与补全

「电脑上打得开,安卓 App 和 curl 却报错」,十有八九是服务器没把中间证书发全。这页会握一次手把服务端发的证书全部取回来,按签发关系排好序;缺中间证书时顺着证书里的 AIA 地址去 CA 那里抓回来补上,最后拼成可以直接替换上去的 fullchain.pem

证书链的几件事

为什么浏览器能打开,客户端却报错
Chrome、Edge 这类桌面浏览器会缓存以前见过的中间证书,还会自己按 AIA 去下载缺的那张,所以链不全也经常没事。Android 的老版本、Java、Go、curl、各种 SDK 都不做这件事,缺一张就直接失败,报 unable to get local issuer certificatecertificate signed by unknown authority
fullchain 的顺序不能乱
RFC 5246 要求服务器证书排第一,后面依次是签发它的中间证书。顺序反了,OpenSSL 1.0.x 这类严格的客户端会直接拒绝。本页输出的已经排好,直接用即可。
根证书不用发
根证书必须由客户端自己信任才有意义,服务端发下来客户端也不会因此就信。多发一张只是每次握手多传一两 KB,在移动网络上是实打实的浪费。
Let's Encrypt 的几个文件怎么对应
certbot 生成的目录里,cert.pem 是服务器证书,chain.pem 是中间证书,fullchain.pem 是两者拼接,privkey.pem 是私钥。nginx 的 ssl_certificate 要填 fullchain.pem,填成 cert.pem 就会出现本页说的那类问题。
这里的「验通/验不通」是按谁的信任库
按我们服务器上的系统根证书库(Debian 的 ca-certificates)判断。自签名证书、企业私有 CA 签的证书在这里一定显示验不通,但在导入了对应根证书的机器上是正常的。
相关工具
证书格式转换(本地拆分合并已有文件)、证书信息查看SSL 证书检测OCSP 吊销查询证书私钥配对
已复制