目前存在三种SSL证书,分别是域名验证证书(DV SSL)、组织验证证书(OV SSL)以及扩展验证证书(EV SSL)。

关于浏览器对EV SSL和非EV SSL显示差异的相关内容已有不少文章进行阐述。不过,若要明确非EV SSL证书(也就是 DV 和 OV)之间的区别,就需要对证书本身的结构进行深入研究。

以下是一种确定性的方法:

在当下,要确切知晓证书的具体类型,唯一的途径就是了解各个证书颁发机构(CA)的操作实践。在X.509 PKI/数字证书标准中,按照RFC 5280所定义的证书策略扩展,证书的发行人应该对其操作实践进行表述。

这就使得CA能够在颁发的证书中呈现出唯一标识符(OID),而这个标识符可以映射到描述该CA与证书相关操作实践的文档上。这个标识符可以通过编程的方式用于对证书的信任进行决策,或者基于证书类型在应用程序中区分不同的用户界面。

这其实也是当今浏览器判断证书是否为EV证书的方法。简单来说,浏览器会有相应的配置,例如“我认可GlobalSign 颁发EV证书,当它提供带有特定策略OID的证书时,就会呈现出EV的用户体验”。

CAB/论坛基线要求使用相同的方法定义域验证和组织验证证书的标识符,这些是:

类型组织验证
域名验证2.23.140.1.2.1
组织验证2.23.140.1.2.2

有了这些标识符之后,我们便能够朝着对证书颁发策略进行确定性评估的目标迈进。不过需要注意的是,并不是所有的证书颁发机构(CA)都已经采用了这些标识符。

启发式方法:

因为CA/B论坛基线要求是在2012年才建立起来的,所以要重新发布现有的证书安装库,并使其使用上述的策略标识符,这自然需要一定的时间。GlobalSign的首席技术官Ryan Hurst详细地给出了一些示例代码,这些代码展示了如何在不依赖对象标识符的情况下对应用程序进行配置,从而确定证书的类别。

总结:

目前,还没有一种绝对可靠的方法来判断证书是经过域名验证还是组织验证,不过在未来几年内,或许可以实现这一操作。

与此同时,我们可以运用一些启发式的方法来辅助区分这些不同类型的证书。