使用M2Cryp创建任意X509扩展

2024-05-17 07:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有兴趣创建一个CSR,它包含由OID指定的任意扩展。理想情况下,我希望该值是一个ASN1编码的实体,尽管将其设置为字符串就足够了。在

各种在线示例都指向这样的代码:

extensionStack = X509.X509_Extension_Stack()
extension = X509.new_extension('subjectAltName', 'DNS:example.com')
extensionStack.push(extension)
request.add_extensions(extensionStack)

扩展是从预定义的名称创建的,比如subjectAltName,然后映射到正确的OID。显然,这些字符串是在objects.txt中定义的,除了重新编译OpenSSL之外,没有办法添加自己的字符串。在

The documentation表示可以通过编辑openssl.cnf添加自定义的X509扩展。但是,我的理解是,这只会影响从命令行调用OpenSSL的操作。在

如何使用M2Crypto实现相同的功能?换言之,如何让它或多或少地像这样工作?在

^{pr2}$

Tags: 字符串实体示例编码extension情况兴趣x509
1条回答
网友
1楼 · 发布于 2024-05-17 07:34:17

你几乎可以做到:

ext = X509.new_extension('1.2.3.4', 
                         'ASN1:UTF8String:Some random data')
# If required: ext.set_critical(1)
cert.add_ext(ext)

它将出现在OpenSSL转储中:

^{pr2}$

不幸的是,M2Crypto在检索自定义扩展时遇到问题,除非首先注册它们,而且这些函数目前还没有通过M2Crypto公开。名称和值将分别返回为“UNDEF”和“None”。在

相关问题 更多 >