使用以下内容查看证书的详细信息:
openssl x509 -noout -text -purpose -in mycert.pem
我发现了一堆目的标志(我发现它们是由附加到证书的各种扩展设置的)。
这些目的标志之一是“任何目的”。我似乎找不到关于这个标志的任何文档以及为什么或为什么不设置它。
你们有谁知道我在哪里可以找到有关此目的的更多信息以及这意味着什么?
谢谢,
使用以下内容查看证书的详细信息:
openssl x509 -noout -text -purpose -in mycert.pem
我发现了一堆目的标志(我发现它们是由附加到证书的各种扩展设置的)。
这些目的标志之一是“任何目的”。我似乎找不到关于这个标志的任何文档以及为什么或为什么不设置它。
你们有谁知道我在哪里可以找到有关此目的的更多信息以及这意味着什么?
谢谢,
的
Any Purpose : Yes
和Any Purpose CA : Yes
线openssl x509 -purpose
是特殊的。它是特定于 openssl 的,表示当与不检查扩展的古老软件版本一起使用时将验证证书的内容。不能关闭或禁用这些特定用途标志。从 openssl 源代码检查在 openssl/crypto/x509v3/v3_purp.c 中定义为静态 X509_PURPOSE xstandard[] = { ... }。X509_PURPOSE_ANY 检查验证函数返回 1。
与此标志最接近的官方文档可能是 Stephen N. Henson 博士撰写的这些帖子,他撰写了 v3_purp.c - http://marc.info/?l=openssl-users&m=96219426811480和http://openssl.6102.n7 .nabble.com/quot-critical-CA-FALSE-quot-but-quot-Any-Purpose-CA-Yes-quot-td29933.html。
引用史蒂夫的话:
KeyUsage 是一个 v3 扩展,它可能存在也可能不存在于证书中。
id-ce-keyUsage 值的有用(如果有点过时)摘要: http ://www.alvestrand.no/objectid/2.5.29.15.html [新增值是 7 = encipherOnly 和 8 = decipherOnly]
诀窍是这个“OID=2.5.29.15 keyUsage 扩展”/可能会或可能不会/出现在特定的证书中。
OpenSSL 可能对 PURPOSE_ANY 的假设是,此扩展是 / 不存在 /,因此“取决于您自己的策略”来决定使用或不使用它。否则,没有对应于“ANY”的位图值......
在 X.509 证书中,与大多数其他情况一样,如果一个术语没有明确定义,那么它会从其直接周围的上下文中继承含义。如果那个上下文是“生活”,那么“任何目的”这个词的字面意思就是这个意思。
因此,请检查颁发 CA 的证书政策、订户协议和信赖方协议,如果他们对标志只字未提,那么这意味着它在盒子上所说的内容。
通常我在根 CA 上设置“AnyPurpose”(这意味着这是根,可以向任何其他中间或子 CA 颁发证书),然后,在颁发中间 CA 时,我设置了限制......
我的根 CA 有:
例如,在我的中间 TLS CA 上,我设置:
这是限制 TLS CA 从根 CA 的所有属性继承(此处应用的限制性 OID 将仅允许签署 TLS 证书,并且使用 pathlen:0 我将禁止子 CA)。
一切都取决于您如何设置 PKI 基础架构。
在我的网络上,我为每个目的做一个中间 CA,例如:
这样,如果邮件证书有问题,我只需要撤销电子邮件 CA,而所有其他中间 CA 都可以。
例如,大型证书颁发机构有一个专用于 EV 的中间 CA。
注意:这是针对个人 PKI 的,如果您希望按照 RFC 和最佳实践(如大型证书颁发机构)做一些事情,那么还有很多额外的步骤,比如包括更多的 OID 并设置所有它们......
例如,您可以在此链接上阅读一些标准:
https://cabforum.org/wp-content/uploads/Baseline_Requirements_V1.pdf
另一个例子,对于 EV 证书,有很多额外的步骤来设置 OID:
而且由于我的设置不需要这些,因此我没有花时间搜索和测试必要的 OID 以使其正常工作
来自:http ://en.wikipedia.org/wiki/Digital_certificate
Key-Usage:公钥的用途(例如加密、签名、证书签名...)。
请参阅 openssl 文档中的 - purpose 标志: http ://www.openssl.org/docs/apps/x509.html#CERTIFICATE_EXTENSIONS
大多数证书的颁发都有其受限的目的(或一组目的),例如客户端身份验证、服务器身份验证、密钥交换和代码签名。如果它们用于未经认可的目的(例如,使用您的电子邮件证书签署代码),则它们无效。
任何用途扩展仅仅意味着证书应该始终通过使用限制,这与说它对所有用途都有效相同。
OpenSSL 的“目的”不仅仅是对 v3 证书的密钥使用扩展的直接反映。
OpenSSL 本身定义了一组“目的”,然后具有一些逻辑来确定给定证书是否与基于证书扩展的所选目的一致 - 包括但不限于密钥使用和扩展密钥使用扩展。
'任何目的'是你得到的,如果你传递
-purpose any
或openssl verify
如果你编写代码,使用例如将 OpenSSL 上下文的目的设置为'任何'值SSL_CTX_set_purpose()
。大多数目的都记录在
man x509
部分中CERTIFICATE EXTENSIONS
-它解释了证书必须具有哪些属性才能对给定目的有效-但这并没有记录any
目的。在源代码的顶部,crypto/x509v3/v3_purp.c
您可以看到为X509_PURPOSE_ANY
is运行的检查函数no_check()
,它只返回 1:实际上它禁用了目的检查。我不确定您是否可以设计出任何证书都无效的情况
any
。我也不确定将目的设置为any
和根本不设置目的之间有什么区别,这应该会导致完全绕过目的检查。具体来说,OpenSSL 的
X509_PURPOSE_ANY
/“任何目的”/-purpose any
概念与RFC 5280 anyExtendedKeyUsage KeyPurposeId 不同。