Linux下使用curl去访问https时,会使用curl默认的ca根证书,这个域名证书的ca根证书没有在信任列表里面,所以curl报错。
解决办法:
windows下浏览器访问正常,我们windows浏览器访问网站,然后导出证书对应的ca根证书,添加到curl的证书信任列表中。
通过Linux命令导出对应的ca根证书,添加到curl的证书信任列表中。
openssl s_client -showcerts -connect www.example.com:443 </dev/null 2>&1 | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > X.cer
cat X.cer >> /etc/pki/tls/certs/ca-bundle.crt
update-ca-trust
对于java中如果使用 HttpClient 访问https 可以使用以下命令导入到jre中的作为信任证书
keytool -import -keystore “/usr/local/jdk/jre/lib/security/cacerts” -storepass changeit -keypass changeit -alias X -file X.cer
参考
Linux 访问 https 证书问题
http://www.putianhui.cn/posts/f488eda243a9/
update-ca-trust - Man Page
https://www.mankier.com/8/update-ca-trust
Curl SSL连接错误35带NSS错误-5961
https://www.itbaoku.cn/post/1993247.html
网友评论