我刚刚设置了一个网站/网络服务器,并通过 ZeroSSL 对其进行了验证,但是当我尝试对其运行 curl 或 wget 时,它会出错。我可以通过运行绕过它,wget --no-check-certificate
或者curl -k
考虑到网站的相当一部分是围绕安装文件构建的,我宁愿让它开箱即用。有没有办法在不下载证书或不检查证书的情况下解决这个问题?
卷曲错误
curl https://gitnet.me
curl: (60) ssl certificate problem: unable to get local issuer certificate
Wget 错误
wget https://gitnet.me
Resolving gitnet.me... 104.207.144.166
Connecting to gitnet.me|104.207.144.166|:443... connected.
ERROR: cannot verify gitnet.me's certificate, issued by 'CN=ZeroSSL RSA Domain Secure Site CA,O=ZeroSSL,C=AT':
Unable to locally verify the issuer's authority
您的网络服务器未正确配置为提供 ZeroSSL 中间证书,因此客户端无法查看您的服务器证书是否实际上导致了已知的根 CA——两者之间存在差距。
(“ZeroSSL 安全站点 CA”本身不是根 CA——商业根 CA 不直接颁发 HTTPS 证书,它们总是在两者之间放置一个中间 CA。)
您的站点可以与 Web 浏览器一起使用,因为它们缓存了以前看到的中间证书,正是为了处理像您这样配置错误的网站,但其他 HTTPS 客户端通常不这样做,因此服务器必须提供所有中间证书。
如果您将 ACME 与 Certbot 一起使用,请将您的网络服务器配置为使用SSL 证书
fullchain.pem
,而不是cert.pem。其他 ACME 客户端也有类似的文件。如果您仍在手动下载证书,根据 ZeroSSL 的文档,您应该已经收到了
ca_bundle.crt
与证书一起的文件。您应该组合这两个文件(它们只是文本文件——在颁发的证书下方附加 ca_bundle),然后配置您的网络服务器以使用组合文件。cat certificate.crt ca_bundle.crt > cert_with_chain.crt
SSLCertificateFile /etc/.../cert_with_chain.crt