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本身只能使用其新格式.

相关文章

1.安装过程出现0x00000000指令引用的0x00000000内存该内存不能为written 如果你安装的是inux系统 需要在...
写在全面:如果根据以下教程涉及到只读文件需要更改文件权限才能需修改文件内容,参考我的另一篇博客:...
写在前面:以下步骤中需要在终端输入命令,电脑端查看博客的朋友可以直接复制粘贴到终端,手机端查看的...
ubuntu16.04和18.04更换国内源 写在前面:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用...
ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后...
又来造轮子了。。。。。。。。。。。。。。。。 今天使用w3af向文件中写入的时候,发现没有write权限,...