openssl 无法获取本地颁发者证书 debian
Posted
技术标签:
【中文标题】openssl 无法获取本地颁发者证书 debian【英文标题】:openssl unable to get local issuer certificate debian 【发布时间】:2014-12-03 07:44:37 【问题描述】:我无法通过 openssl 验证证书
openssl verify cert.pem
得到这样的东西:
cert.pem: /C = PL / O = DATA 0 深度查找时出现错误 20:无法获取本地颁发者证书
来自 Centos 上机器的相同证书 - 验证正确。
Debian:挤压/sid
CA ROOT 有问题吗?更新 openssl 帮助?
【问题讨论】:
我投票结束这个问题,因为它属于unix.stackexchange.com。 【参考方案1】:与几乎信任任何人的浏览器不同,OpenSSL 默认不信任任何内容。
由您决定应该信任的内容。使用 OpenSSL 时,您必须指定一些内容。它可能是要信任的证书或证书列表。
目录/etc/ssl/certs
包含许多证书。使用这样的目录应该可以验证几乎所有内容:
openssl verify -CApath /etc/ssl/certs cert.pem
建议您将受信任证书的数量减少到一个、两个或尽可能少的数量。
【讨论】:
仍然无法让我的工作(letsencrypt):root@messagerie-secours[CHROOT][10.10.10.19] /etc/ssl/private/LETSENCRYPT # openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt chained_cert.crt chained_cert.crt: CN = messagerie.algerian-radio.dz error 20 at 0 depth lookup:unable to get local issuer certificate root@messagerie-secours[CHROOT][10.10.10.19] /etc/ssl/private/LETSENCRYPT #
浏览器不信任“来自任何人的一切”,OpenSSL 的方法与浏览器相同。它们都使用操作系统提供的或自己的受信任 CA 列表。【参考方案2】:
您需要指定 CA 证书以验证颁发的证书,因为它显然不包含在 pem 中(尽管这是可能的):
openssl verify -CAfile your_ca_cert_file cert.pem
如果您在 centOS 上没有收到错误,那么周围有 CA 证书,openssl 可以使用它来成功验证 cert.pem
【讨论】:
感谢重播。如果我理解: - 从 Debian 完成命令:openssl verify -CAfile ca-bundle.crt cert.pem 其中: - Ca-bundle.crt - 证书颁发者的根 CA(Unizeto / Certum - 波兰) - Cert.pem -从颁发者获得的证书(Unizeto / Certum - 波兰) 结果 - 在 Debian 系统上执行的测试: openssl verify -CAfile bundle.crt ca-cert.pem cert.pem: OK openssl verify cert.pem cert.pem: / C = PL / O = 数据... 0 深度查找时出现错误 20:无法获取本地颁发者证书如何在不指示 ca-bundle.crt 的情况下执行此操作 - 我的证书状态为 OK? 您也可以设置和导出环境变量 SSL_CERT_FILE 或 SSL_CERT_DIR...export SSL_CERT_FILE=/path/to/ca_bundle.crt
或 export SSL_CERT_DIR=/path/to/ca/dir
然后您不必在每个 openssl 命令中指定 CAfile 或 CApath。【参考方案3】:
您需要使您的 CA 在服务器上受信任。例如,如果您的证书来自 goadday,请运行以下命令。
cd /tmp
sudo wget -O gd_intermediate.crt https://certs.godaddy.com/repository/gd_intermediate.crt
sudo cp /tmp/gd_intermediate.crt /usr/local/share/ca-certificates/gd_intermediate.crt
sudo update-ca-certificates
运行这些命令后,应该验证您的证书。
openssl verify cert.pem
【讨论】:
您不应使用 wget 下载证书。 wget 有一些已知的弱点。一个可行的替代方案是 curl。不过我懒得提供链接。以上是关于openssl 无法获取本地颁发者证书 debian的主要内容,如果未能解决你的问题,请参考以下文章
Ruby 2.6.6 OpenSSL 1.1.1g - 证书验证失败(无法获取本地颁发者证书)