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

前端之家收集整理的这篇文章主要介绍了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本身只能使用其新格式.

猜你在找的Ubuntu相关文章