ubuntu - OpenSSL无法获得本地颁发者证书,除非显式指定CAfile

  显示原文与译文双语对照的内容
0 0

我想连接到Apple是Push Notification服务从不Ubuntu Server为app 。 我已经成功生成所需的组合。pem证书pyAPNS提供者我使用。 但是,当我试图验证证书的使用 openssl verify时,出现 error 20 at 0 depth lookup:unable to get local issuer certificate. 想做就i 明确指定证书颁发机构( openssl verify apns.pem -CAfile entrust_2048_ca.pem),但是我已经显式Entrust证书安装在系统上,这里 便根据下" 导入Certificate到System Wide证书颁发机构Database ",据我了解此页,没有问题应该( 证书处于/usr/lib/ssl/certs还有一个符号链接到其与哈希) 。

同样的错误如果我尝试连接到APNS本身对于 openssl s_client: 似乎我可以在连接到指定CAfile明确,但除此之外,没有。 pyaPNS告诉我那无法连接到APNS服务器,我只能是认为是同样的原因。

如何获得OpenSSL承认Entrust证书颁发机构默认情况下,没有显式指定它每次? 好像少一个步骤走走?

时间:原作者:2个回答

0 0

openSSL使用哈希的证书Issuer DN查找该文件类型的默认目录CA证书安装。

请参见 OpenSSLverify资料:

capath directory

受信任证书的目录。 证书应具有名称,其形式为: 哈希.0或具有符号链接对他们这种形式( ``hash"是散列的证书使用者名称: 请参见哈希X509实用程序的选项) 。 在UNIX c_rehash脚本将自动创建符号链接的目录证书。

这些哈希值将来自Subject DN每个CA证书的( 因为目标在于查找CA证书与主题符合颁发者的证书验证) 。 可以用上述方法, c_rehash如文档中说明,或获取Subject DN是哈希使用 openssl x509 -subject_hash -noout -in cacert.pem并相应地重命名file/link 。

直接颁发者的证书验证可能不是根CA证书: 可能存在一个中间CA证书链中。 你还需要确保中间证书使用。

此外,还有两种不同哈希格式( 后发生更改OpenSSL版本1 。0 ),是值得我们去链接同时使用 -subject_hash_old-subject_hash默认情况下,尽管OpenSSL本身应该只使用它的新格式。

原作者:
...