Rog*_*ahl 2 python pyopenssl x509
使用Python和PyOpenSSL,有没有办法检索自定义扩展的价值?通过自定义扩展,我的意思是使用在http://www.openssl.org/docs/apps/x509v3_config.html的 ARBITRARY EXTENSIONS下描述的任意扩展格式编码的扩展.
此外,是否可以使用PyOpenSSL创建包含此类扩展的证书?
如果其中任何一个的答案都是"否",我也会对如何使用任何其他Python库执行此操作的指针感兴趣.我不想对OpenSSL命令行应用程序执行系统调用.
您可以使用pyOpenSSL在已加载的X.509证书上获得任何和所有扩展.例如:
>>> from OpenSSL import crypto as c
>>> cert = c.load_certificate(c.FILETYPE_PEM, file('server.pem').read())
>>> cert.get_extension_count()
4L
>>> ext = cert.get_extension(0)
>>> ext.get_short_name()
'basicConstraints'
>>> ext.get_data()
'0\x00'
>>>
Run Code Online (Sandbox Code Playgroud)
数据以原始格式出现(ASN.1的某些编码,可能取决于具体的扩展名).
您还可以添加扩展程序.
>>> newext = c.X509Extension('nsComment', 0, 'tacos are delicious')
>>> cert.add_extensions([newext])
>>> cert.get_extension_count()
5L
>>> cert.get_extension(4)
<X509Extension object at 0x7f74db7c2290>
>>> cert.get_extension(4).get_data()
'\x16\x13tacos are delicious'
>>>
Run Code Online (Sandbox Code Playgroud)
但请注意略微不对称.扩展数据必须是字符串,并使用ASN.1自动编码.这似乎排除了添加任意非字符串扩展数据的可能性.
| 归档时间: |
|
| 查看次数: |
8631 次 |
| 最近记录: |