【问题标题】:CSR with common name longer than 64 characters公用名超过 64 个字符的 CSR
【发布时间】:2017-11-08 09:25:00
【问题描述】:

我有一个关于 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

感谢和问候,

【问题讨论】:

  • 伙计,你差点跑题了。这个问题的 95% 属于 Information Security Stack Exchange。这救了你:“有人能...告诉我如何将这个长主题传递给 PyOpenSSL”.

标签: openssl pyopenssl csr


【解决方案1】:

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

听起来 OpenSSL 函数之一没有像您期望的那样验证参数(也许)。问题是,要针对什么进行验证。

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

发布政策只是要遵循的一组规则。对于 CA/B 和 IETF,它们通常是相同的,但它们在某些领域有所不同。其中一个领域是中间 CA 证书的密钥用法。 IETF 将它们视为一个联合体,因此它们是相加的;而 CA/B 将它们视为交叉点,因此链中缺少的密钥用法是减法的。另一个细节是通用名长度。

CA/B 的公用名长度不受限制。 IETF 将通用名称限制在 64 位。更改 IETF 的发行政策不久前就出现在 PKIX 邮件列表中。见Amendment to CABF Baseline Requirements。我不记得是怎么回事。


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

很好(主机名不在通用名中)。公用名是向用户显示的友好名称。主机名总是出现在Subject Alternate Name,而不是Common Name。 CA/B 和 IETF 都同意这一点。 CA/B 和 IETF 都同意将主机名放在 Common Name 中的做法是不推荐使用,但不是禁止。 CA/B 很快就改了,很快就被禁止了。

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


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

我认为这是格式错误的。在树的某个级别上只能存在一个通用名称

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

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


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

谁能解释一下并告诉我如何将这个长主题传递给 pyopenssl

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

在这种情况下,您应该将其作为自定义字段添加到证书中。您甚至可以将其添加为otherNamedirectoryName 类型的Subject Alternate Name。但是,我不知道名称长度限制是什么。

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,但它没有回答您在此处提出的一些问题。

【讨论】:

  • 您好 jww,感谢您的回答。 python中是否有生成椭圆曲线私钥/公钥对(ECDSA)?
  • 抱歉,不知道。如果您遇到问题,您应该再问一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多