首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在X509中创建带有扩展的PyASN1证书时出错

在X509中创建带有扩展的PyASN1证书时出错
EN

Stack Overflow用户
提问于 2015-09-19 12:47:01
回答 1查看 535关注 0票数 1

我正在尝试创建一个X509v3证书并将其编码到DER中,并将其保存到文件中。我在Ubuntu14.04上使用PyASN1 0.1.7和Python2.7.6。

该守则可概括如下:

代码语言:javascript
复制
tbs = rfc2459.TBSCertificate()
tbs.setComponentByName('XYZ', xyz)  # other non-problematic certificate fields
....
subjaltname = rfc2459.SubjectAltName()
subjaltname.setComponentByPosition(0, fc2459.GeneralName().setComponentByName('dNSName', 'domain.com'))
extension = rfc2459.Extension()
extension.setComponentByName('extnID', rfc2459.id_ce_subjectAltName)
extension.setComponentByName('critical', univ.Boolean(False))
extension.setComponentByName('extnValue', univ.OctetString(der_encoder.encode(subjaltname)))
extensions = rfc2459.Extensions()
extensions.setComponentByPosition(0, extension)
tbs.setComponentByName('extensions', extensions.subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
cert = rfc2459.Certificate()
cert.setComponentByName('tbsCertificate', tbs)

当我尝试用DER编码器对cert对象进行编码时,会得到以下错误:

代码语言:javascript
复制
pyasn1.type.error.ValueConstraintError: ConstraintsIntersection(ConstraintsIntersection(), ValueSizeConstraint(1, 64)) failed at: "ValueSizeConstraint(1, 64) failed at: "Extensions()""

如对代码中有问题的部分有任何建议,将不胜感激。

如果有人有关于如何使用PyASN1创建带有扩展的PyASN1证书的示例代码,我很乐意看到它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-19 17:30:37

我的猜测是,当您在这里创建扩展对象的子类型时:

代码语言:javascript
复制
tbs.setComponentByName('extensions',extensions.subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))

它失去了它的初始值。您可以尝试将cloneValueFlag=True添加到.subtype()以强制它执行深度复制,或者最好在初始化之前进行子类型:

代码语言:javascript
复制
extensions = rfc2459.Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))
extensions.setComponentByPosition(0, extension)
tbs.setComponentByName('extensions', extensions)

此外,启用pyasn1调试可能有助于故障排除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32668380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档