我是pyOpenSSL的新用户,我想用以下代码制作一个证书

from OpenSSL import crypto as c

cert = c.X509()
cert.add_extensions([
    c.X509Extension('crlDistributionPoints', False, 'dirName:/C=US/O=TEST'),
])

这个密码不行,有人能帮我吗?pyOpenSSL似乎不支持dirName
cert.add_extensions([
    c.X509Extension('crlDistributionPoints', False, 'URI:http://somesite') can work
])

最佳答案

我也遇到了同样的问题,但是我也找不到一个真正的解决方案,我设法找到了一种通过Python完成的解决方法。
在本页中,将解释格式化http://openssl.org/docs/apps/x509v3_config.html#CRL-distribution-points以及使用原始DER字节的选项。(节:任意扩展)
首先从已经具有正确URI和dirName的证书中“收集”DER字节。另一种方法是使用openssl生成具有正确crlDistributionPoint的证书,本例中的tmpcert就是这个证书。还要找出使用了哪个扩展索引。get_short_name将给出扩展名的“key”,因此搜索crlDistributionPoint。
使用以下方法收集:

from binascii import hexlify
print tmpcert.get_extension(5).get_short_name()
print hexlify(tmpcert.get_extension(5).get_data())

然后格式化这个输出并在X509Extension()的初始化器中使用它
crypto.X509Extension('crlDistributionPoints', False,
"DER:30:6a:xx:xx:xx:..........:xx:xx")

正如我们所理解的,这是放弃一个“硬编码”的解决方案,没有直接的方法可以这样改变这个字段的内容。

关于python - crlDistributionPoints dirName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26931070/

10-09 01:42