gpt4 book ai didi

ubuntu - 除非明确指定 CAfile,否则 OpenSSL 无法获取本地颁发者证书

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:08 26 4
gpt4 key购买 nike

我正在尝试从一个应用程序的 Ubuntu 服务器连接到 Apple 的推送通知服务。我已经成功生成了我正在使用的 pyAPNS 提供商所需的组合 .pem 证书。但是,当我尝试使用 openssl verify 验证证书时,我得到了 error 20 at 0 depth lookup:unable to get local issuer certificate。如果我明确指定证书颁发机构(openssl verify apns.pem -CAfile entrust_2048_ca.pem),它会起作用,但我已经按照说明在系统上明确安装了 Entrust 证书 here ,在“将证书导入系统范围的证书颁发机构数据库”下,据我所知this page ,一切都是它应该的样子(证书在/usr/lib/ssl/certs 中,并且有一个带有哈希的符号链接(symbolic link))。

如果我尝试使用 openssl s_client 连接到 APNS 本身,也会发生同样的情况:如果我明确指定 CAfile,它似乎可以连接,否则就不行。 PyAPNS 告诉我它无法连接到 APNS 服务器,我只能假设这是出于同样的原因。

如何让 OpenSSL 在默认情况下识别 Entrust 证书颁发机构,而不是每次都明确指定它?我在某处错过了一步吗?

最佳答案

OpenSSL 使用证书颁发者 DN 的散列在安装 CA 证书的默认目录中查找文件。

参见 OpenSSL verify documentation :

-CApath directory

A directory of trusted certificates. The certificates should have names of the form: hash.0 or have symbolic links to them of this form (``hash'' is the hashed certificate subject name: see the -hash option of the x509 utility). Under Unix the c_rehash script will automatically create symbolic links to a directory of certificates.

这些哈希值将来自每个 CA 证书的主题 DN(因为目的是查找主题与证书颁发者匹配的 CA 证书以进行验证)。您可以按照文档中的说明使用 c_rehash,或者使用 openssl x509 -subject_hash -noout -in cacert.pem 获取主题 DN 的哈希值,并相应地重命名文件/链接。

要验证的证书的直接颁发者可能不是根 CA 证书:链中可能有中间 CA 证书。您还需要确保使用中间证书。

此外,有两种不同的散列格式(自 OpenSSL 1.0 版以来发生了变化),值得同时使用 -subject_hash_old-subject_hash 建立链接,尽管默认情况下 OpenSSL 本身应该只使用它的新格式。

关于ubuntu - 除非明确指定 CAfile,否则 OpenSSL 无法获取本地颁发者证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12041512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com