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

我正在尝试从ubuntu服务器连接到Apple的Push Notification服务,用于应用程序.我已经成功地生成了我正在使用的pyAPNS提供商所需的组合.pem证书.但是,当我尝试使用openssl验证验证证书时,我会在0深度查找中获取错误20:无法获取本地颁发者证书.如果我明确指定证书颁发机构(openssl verify apns.pem -CAfile entrust_2048_ca.pem),我已经明确地在系统上安装了entrust证书,如下所示:“将证书导入系统级证书”权限数据库“,根据我的理解 this page,一切都是应该的(证书在/usr/lib / ssl / certs中,并且有一个带有哈希的符号链接).

如果我尝试使用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本身只能使用其新格式.

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...