【发布时间】:2014-03-07 11:10:19
【问题描述】:
我有兴趣创建一个包含由 OID 指定的任意扩展的 CSR。理想情况下,我希望该值是 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 做同样的事情?换句话说,如何让它或多或少像这样工作?
X509.new_extension('OID:1.2.3.4.5.42', 'test')
#or this
X509.new_extension('OID:1.2.3.4.5.42', '0x1E4...819')
【问题讨论】:
-
"...包含任意扩展的 CSR..." - 尽管您的 CSR 包含它们,但这并不意味着发行者会将它们复制到他们为您发行的证书中。大多数发行人往往对复制和签署的内容相当严格。
-
确实如此,但这是针对内部开发的系统,因此 CA 将接受并将它们包含在颁发的证书中是事实。
-
好的,我在问题中错过了。