通用名称超过64个字符的CSR

时间:2017-11-08 09:25:00

标签: openssl pyopenssl csr

我对OpenSSL CSR(证书签名请求)的公共名称(CN)的长度有疑问。

我在Google上看到,CSR中CN字段的长度限制为64个字符。我在Windows CMD上测试了openssl,我能够将此主题传递给openssl.exe

-subj "/C=YY/O=XXXX/CN=YY:12/CN=XXX:ABCDDMW0B170XX494/CN=ABCD:01020304050604567892030405060708/CN=BBBBCCCC"

在我们的应用程序中,CN字段不是域名,它们只是来自设备的信息

CN的总长度为86个字符。为什么我没有收到错误?

在使用pyopenssl的python中,由于错误"字符串太长而无法传递此主题"

有人可以解释它并告诉我如何将这个长篇主题传递给pyopenssl

谢谢和问候,

1 个答案:

答案 0 :(得分:1)

  

CN的总长度为86个字符。为什么我没有收到错误?

听起来有一个OpenSSL函数没有像你期望的那样验证参数(也许)。问题是,要对哪些内容进行验证。

一般来说,浏览器遵循CA/Browser Forums发布政策。非浏览器客户端,如cURL,Wget和OpenSSL,遵循IETF和RFC。它们是不同的发行政策。

发布政策只是一套遵循的规则。它们通常与CA / B和IETF相同,但它们在某些区域潜水。其中一个方面是中间CA证书的密钥用法。 IETF将它们视为一个联合体,因此它们是添加剂;而CA / B将它们视为交集,因此链中缺少的密钥用法是减法的。另一个细节是 Common Name length。

CA / B的公共名称长度无限制。 IETF将公共名称限制在64.更改IETF的发布策略在PKIX邮件列表上出现了一段时间;见Amendment to CABF Baseline Requirements。我不记得是什么了。

  

在我们的应用程序中,CN字段不是域名,它们只是来自设备的信息

好(主机名不在 Common Name 中)。通用名称是显示给用户的友好名称。主机名始终位于主题备用名称中,而不是通用名称。 CA / B和IETF都同意这一点。并且CA / B和IETF都同意在公共名称中放置主机名的做法 已弃用但不是禁止。 CA / B很快就会改变它,很快它就会被禁止。

将它作为自定义字段添加到证书中可能是个好主意。

  

-subj "/C=YY/O=XXXX/CN=YY:12/CN=XXX:ABCDDMW0B170XX494/CN=ABCD:01020304050604567892030405060708/CN=BBBBCCCC"

我认为这是畸形的。树中的某个级别只能出现一个 Common Name

同样,将它作为自定义字段添加到证书中可能是个好主意。

我相信RFC 4514 - Lightweight Directory Access Protocol中提供了用于编码专有名称的IETF规则。我不记得CA / B使用的是什么。

  

在使用pyopenssl的python中,由于“字符串太长”错误,我无法通过此主题

     

有人可以解释它并告诉我如何将这个长篇主题传递给pyopenssl

听起来PyOpenSSL正在使用IETF发布策略。但它可能应该拒​​绝CN字符串格式错误而不是太久。我想字符串长度检查更有效,所以先执行它。

在这种情况下,您应将其作为自定义字段添加到证书中。您甚至可以将其添加为otherNamedirectoryName类型的主题备用名称。但是,我不知道名称长度约束是什么。

Microsoft类似于在证书中编码用户主体名称(UPN)。该公司只是添加了一个包含登录凭据的自定义字段。以下是相关问题:How to encode a username in PKIX certificate?

您应该在Information Security Stack Exchange上提出几个问题。他们应该能够帮助您解决问题,“如何在PKIX证书中对名称ABCD:01020304050604567892030405060708:BBBBCCCC进行编码?”

以下是相关问题:Distinguished Name length constraint in X.509 certificate,但它没有回答您在此提出的一些问题。