let's encrypt it 给一般网站签发的免费证书采用三级认证:root ca(共享) -> intermediate ca(共享) -> leaf cert(域名证书,不共享).
acme 会生成4个证书:ca.cer, fullchain.cer, domain-name.cer, domain-name.key
- ca.cer 是root ca证书, 一般客户端会预置,服务端没必要也没有地方配置。
- domain-name.cer是leaf cert 叶子证书。面向浏览器的https服务可以只用这个证书。因为一般的浏览器都会内置let's encrypt it的intermediate ca。
- fullchain.cer是将intermediate ca和domain-name.cer串在一起的增强版域名证书。面向非浏览器的https服务(如alist dav服务、syncthing)需要用这个证书,而非用domain-name.cer。
- domain-name.key是用于解密“域名证书加密数据”的私钥。
结论:使用let's encrypt it 免费证书时,遇到SSLHandshakeException、“unable to verify the first certificate” 错误时,须将domain-name.cer更换为fullchain.cer。