如何使用 openssl 检测 CA 是否将 EV 用于证书

信息安全 tls 证书 证书颁发机构 openssl
2021-08-19 23:12:25

我想下载特定主机名的证书并检测 CA 在颁发它时是否使用了 EV(扩展验证)。到目前为止,我找不到任何将证书标识为 EV 的东西。有什么办法可以做到这一点?理想情况下使用 OpenSSL?

1个回答

请注意,EV 证书在结构上没有区别——它们只是根据不同的政策颁发的证书。所以你必须检查政策。请参阅http://en.wikipedia.org/wiki/Extended_Validation_Certificate#Extended_Validation_certificate_identification

您将需要进行相当广泛的表查找,恐​​怕不是 openssl 原生的。

这可能是https://stackoverflow.com/questions/14705157/how-to-check-if-a-x509-certificate-has-extended-validation-switched-on的重复

针对以下一些评论:

此属性位于“X509v3 扩展”字段中。x509v3_config(5)笔记

证书政策。

这是一个原始扩展。可以使用适当的语法设置此扩展的所有字段。

如果您遵循 PKIX 建议并仅使用一个 OID,那么您只需包含该 OID 的值。可以设置多个 OID,以逗号分隔,例如:

certificatePolicies= 1.2.4.5, 1.1.3.4

这就是他们进入证书的方式。这是证书中的样子:例如,如果您检查保护https://www.globalsign.com/en/的 GlobalSign 证书:

echo | openssl s_client -connect www.globalsign.com:443 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > globalsign.pem

这会在文件中捕获证书。可以查看,

openssl x509 -text -noout -in globalsign.pem

大约在输出的中途,[...]

       X509v3 扩展:
            X509v3 密钥用法:关键
                数字签名、密钥加密
            X509v3 证书策略: 
                政策:1.3.6.1.4.1.4146.1.1
                  CPS:https://www.globalsign.com/repository/

[...] 该策略 OID 对应于 globalsign 的 EV OID(并且在维基百科的表格中。)。正如迈克指出的那样,http ://oid-info.com/get/1.3.6.1.4.1.4146.1.1将其描述为{iso(1) identify-organization(3) dod(6) internet(1) private (4) 企业(1) 4146 certificate-policies(1) extended-Validation-SSL(1)}并且 4146 是 GlobalSign NV/SA。