ant*_*sis 12 ubuntu ssl openssl ssl-certificate apple-push-notifications
我正在尝试从Ubuntu服务器连接到Apple的Push Notification服务以获取应用程序.我已经成功生成了我正在使用的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证书,据我所知这个页面,一切都是应该的(证书在/ usr/lib/ssl/certs中,并且有一个带有哈希的符号链接).
如果我尝试连接到APNS本身,也会发生同样的情况openssl s_client:如果我明确指定了CA文件,它似乎连接正常,但不是.PyAPNS告诉我它无法连接到APNS服务器,我只能假设这是出于同样的原因.
如何在默认情况下让OpenSSL识别Entrust证书颁发机构,而不是每次都明确指定它?我在某处错过了一步吗?
Bru*_*uno 15
OpenSSL使用证书的颁发者DN的哈希来在安装CA证书的默认目录中查找该文件.
请参阅OpenSSL verify文档:
-CApath目录
可信证书的目录.证书应具有以下形式的名称:hash.0或具有此形式的符号链接(``hash''是散列证书主题名称:请参阅x509实用程序的-hash选项).在Unix下,c_rehash脚本将自动创建指向证书目录的符号链接.
这些哈希值将来自每个CA证书的主题DN(因为目标是查找主题与证书的颁发者匹配的CA证书以进行验证).您可以使用c_rehash文档记录,也可以使用主题DN的哈希值openssl x509 -subject_hash -noout -in cacert.pem并相应地重命名文件/链接.
要验证的证书的直接颁发者可能不是根CA证书:链中可能存在中间CA证书.您还需要确保使用中间证书.
此外,有两种不同的散列格式(有一个变化,因为OpenSSL的版本1.0),这是值得的同时使用链接-subject_hash_old和-subject_hash,虽然本身的OpenSSL默认情况下,才应使用新格式.
| 归档时间: |
|
| 查看次数: |
53053 次 |
| 最近记录: |