Python中文
首页
教程
问答
标签
搜索
登录
注册
如何使用Python输出仅证书PKCS#7
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在用Python实现一个<a href="http://tools.ietf.org/html/draft-nourse-scep-17" rel="nofollow noreferrer">SCEP</a>服务器。SCEP规范要求我用“仅限证书的PKCS 7”响应<code>PKIOperation</code>。Apple在Ruby中有一个参考实现,它执行以下操作。在</p> <pre><code>require 'openssl' @@root_cert = OpenSSL::X509::Certificate.new(File.read("ca_cert.pem")) @@ra_cert = OpenSSL::X509::Certificate.new(File.read("ra_cert.pem")) scep_certs = OpenSSL::PKCS7.new() scep_certs.type="signed" scep_certs.certificates=[@@root_cert, @@ra_cert] File.open('from_ruby.der', 'w') { |file| file.write(scep_certs.to_der)} </code></pre> <p>该代码正确地输出一个pcks7der文件,该文件同时包含CA和RA证书。我正在尝试将这些代码移植到Python。我使用M2Crypto库来访问OpenSSL。我正在为<a href="http://www.heikkitoivonen.net/m2crypto/api/M2Crypto.SMIME.PKCS7-class.html" rel="nofollow noreferrer">M2Crypto.SMIME.PKCS7</a>没有<code>certificates</code>方法而挣扎。到目前为止,我提出了以下几点。在</p> ^{pr2}$ <p>这个Python代码确实输出了一个DER编码的文件,看起来它确实包含了两个证书。但是OpenSSL无法读取此文件。在</p> <pre><code>openssl pkcs7 -in from_ruby.der -inform DER -print_certs </code></pre> <p>打印出Ruby脚本中的证书就可以了,而</p> <pre><code>openssl pkcs7 -in from_python.der -inform DER -print_certs </code></pre> <p>引发此错误</p> <pre><code>unable to load PKCS7 object 89377:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:/SourceCache/OpenSSL098/OpenSSL098-47.1/src/crypto/asn1/tasn_dec.c:1315: 89377:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:/SourceCache/OpenSSL098/OpenSSL098-47.1/src/crypto/asn1/tasn_dec.c:827: 89377:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:/SourceCache/OpenSSL098/OpenSSL098-47.1/src/crypto/asn1/tasn_dec.c:747:Field=type, Type=PKCS7 </code></pre> <p>如何让Python以与Ruby相同的格式输出CA和RA证书?在</p> <p><a href="https://gist.github.com/skabber/6336287" rel="nofollow noreferrer">I have posted the test certs I'm using as a gist.</a></p> <p>更新: 我找到了生成相同文件的openssl命令。在</p> <pre><code>openssl crl2pkcs7 -nocrl -certfile ca_cert.pem -certfile ra_cert.pem -out crl.der -outform DER </code></pre> <p>现在,我如何在Python中做到这一点。与<a href="https://stackoverflow.com/questions/17583737/how-to-convert-pem-to-p7b-with-python">this question</a>相同</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我有一种感觉(完全没有经过测试)是这样的:</p> <pre><code>an_smime = M2Crypto.SMIME.SMIME() an_smime.set_x509_stack(stack) an_smime.write(M2Crypto.BIO.File('from_python.der'), pkcs7=True) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
5 回答
如何添加表示整数的擦边字符串?
6 回答
如何添加要在Bokeh中使用的新font.ttf文件?
7 回答
如何添加要显示的矩阵XY轴编号和XY轴
1 回答
如何添加计数?
10 回答
如何添加计数器函数?
7 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
10 回答
如何添加计数器来跟踪while循环中的月份和年份?
10 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
9 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
7 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
1 回答
如何添加评论拉梅尔亚姆
9 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
4 回答
如何添加谷歌地点自动完成到Flask?
7 回答
如何添加超时、python discord bot
5 回答
如何添加超过1dp的检查
4 回答
如何添加距离方法
1 回答
如何添加跟随游戏的敌人精灵
1 回答
如何添加路径以便python可以找到程序?
8 回答
如何添加身份验证/安全性以使用happybase访问HBase?
4 回答