如何创建自己的扩展验证证书以显示绿色地址栏?

7

我创建了一个根证书和一个中间证书。然后我签署了我的扩展证书,但是它没有成功。

我将根证书和中间证书添加到了浏览器和计算机的密钥库中。

我看到了“安全”一词,但我希望在绿色栏中看到我的名字。

如何使用OpenSSL生成扩展证书的策略是什么?

certificatePolicies=ia5org,1.2.3.4,1.5.6.7.8,@polsect
 [polsect] 
policyIdentifier = 1.3.5.8 
CPS.1="https://jitc.rahmican.com.tr";
userNotice.1=@notice 
[notice] 
explicitText="Explicit Text Here"
 organization="rahmican ltd sti" 
noticeNumbers=1,2,3,4

我在openssl配置文件中使用了以下内容,但没有生效。请你帮我看看问题所在?

我知道绿色条只会出现在我的电脑上。我的目标只是想看到我的名字在绿色条中。 - Rahmican
从Firefox 70开始,EV证书上的绿色栏不再存在:https://blog.mozilla.org/security/2019/10/15/improved-security-and-privacy-indicators-in-firefox-70/ - dAm2K
1个回答

8

首先,您需要遵守CA浏览器EV指南

  • 您的证书需要符合DV(域名验证)规则,我们知道这是可以的,因为您的浏览器显示“安全”,即使EV绿色栏没有显示
  • 您需要添加以下EV扩展:2.23.140.1.1
  • 您需要添加一个证书实践声明,带有扩展名2.16.840.1.114412.2.1
  • 还有一些其他事项,最好在DigiCert的以下文档的EV列中进行描述:https://www.digicert.com/wp-content/uploads/2018/01/Certificate-Profiles.pdf

这些其他事项很容易遵守,因为它们要么已经需要DV证书,要么您可以更新openssl配置以添加那些DV证书不需要或禁止的内容。

在这些额外的信息中,有一些是可选的,但以下3个与DN有关的信息不是可选的,因此您必须将这些信息添加到主题的DN中。创建CSR时,您可以使用openssl添加它们。例如:

openssl req -config openssl-EV.cnf -new -days 365 -pubkey -key key.pem -subj "/businessCategory=Private/serialNumber=5157550/jurisdictionC=US/CN=fenyo.net/O=FenyoNet/C=FR" -nodes > csr.pem

重要的部分是对于EV证书,以下内容必须包含:/businessCategory=Private/serialNumber=5157550/jurisdictionC=US。必须包含这3个必需属性(businessCategory、serialNumber和jurisdictionC)在DN中。但是openssl可能不知道businessCategory和jurisdictionC的OID。因此,像这样填写openssl配置文件的new_oids部分以进行补充:
[ new_oids ]
businessCategory = 2.5.4.15
jurisdictionC = 1.3.6.1.4.1.311.60.2.1.3

在CSR中具有这些属性是不够的,因为您拥有自己的CA,而CA根据CA策略过滤和删除CN的某些属性。您可能正在运行类似于此的内容来签署证书:
openssl ca -verbose -in csr.pem -extensions v3_ca -out newcert.pem -config openssl-EV.cnf

这一步将会过滤掉在你的CSR主题DN中添加的额外属性,如果你的openssl配置文件没有专门为EV证书设计。因此,你必须更改openssl配置文件以使这些属性保留在签名证书中。为了达到这个目的,在openssl配置文件的CA部分中找到策略字段,例如policy_match,并转到相应的部分(在本例中为[policy_match]),并在该部分中添加以下条目(不要删除该部分中已有的内容):
[ policy_match ]
businessCategory = optional
serialNumber = optional
jurisdictionC = optional

这将使“openssl ca”输出这些属性,如果在CSR中找到它们。
现在,请注意遵守这些CA浏览器EV指南是不够的。许多浏览器添加其他需求。例如,CA浏览器EV指南验证使用CRL而不是OCSP的EV证书(CA Brower说:如果证书未在authorityInformationAccess扩展中指定OCSP响应器位置,则订阅证书中必须存在cRLDistribution Point扩展。)。但相反,Firefox添加了许多其他规则,包括OCSP响应器的可用性。
Firefox执行多个测试以确定服务器证书是否为有效的EV证书。如果证书通过这些测试,Firefox将显示新的EV UI元素。具体来说,证书必须通过以下所有测试。
这些规则来自https://wiki.mozilla.org/CA:EV_Revocation_Checking
除了EV特定的测试,服务器证书必须通过所有DV证书所需的测试。Firefox 3中使用的证书验证引擎(NSS加密库)必须能够找到一个有效的证书链,该链从服务器证书延伸到Firefox附带的EV批准根证书之一。服务器证书必须包含正好一个EV策略扩展(OID)。服务器证书可以包含一个或多个策略扩展,但不能包含多个EV策略扩展。中间证书必须隐式或显式地允许在服务器证书中列出的EV策略OID。Firefox 3将使用OCSP协议测试服务器证书的吊销状态。服务器证书必须包含一个包含使用HTTP协议的OCSP URI的权威信息访问(AIA)扩展。Firefox必须能够与给定的OCSP服务器完成OCSP请求和响应事务。当OCSP服务器连接失败时,Firefox将服务器证书视为无效以进行EV处理。这对于Firefox会话中每个服务器证书的第一次检查都是正确的。Firefox使用易失性缓存来减少执行的OCSP事务数量。Firefox必须能够验证接收到的OCSP响应。响应必须确认服务器证书未被吊销。OCSP必须在应用程序中启用,这是Firefox使用的默认配置。此时Firefox不会按需下载CRL。OCSP还必须适用于中间证书。未通过的OCSP响应将导致不给予EV处理。 因此,要获得绿色栏,您必须像之前所说的那样更新openssl配置,并修改您的CA组织以添加OCSP响应者和其他浏览器需要识别您的服务器作为EV站点的内容。对于您这种拥有CA和PKI的人,Mozilla创建了一个在线站点来检查所有这些EV要求: https://tls-observatory.services.mozilla.com/static/ev-checker.html 在此网站上: 您输入您的服务器名称 您输入您选择的EV扩展名(通常为2.23.140.1.1) 您以PEM格式输入签署您的EV证书的根证书 然后该网站将进行测试并告诉您哪些是正确的,哪些是错误的。请注意,截至今天(2018年8月2日),该网站速度非常慢。希望它很快就能恢复正常。

嗨,我尝试了它们,但没有起作用。除了绿色栏中的“安全”之外,我什么也看不到。 - Rahmican
我已经将 [ new_oids ] 添加到我正在使用的 openssl.cnf 文件中,但是我得到了一个"Subject Attribute jurisdictionOfIncorporationCountryName has no known NID, skipped" 的错误。 - Rahmican
在您的配置文件的第一行添加 oid_section = new_oids,并删除任何以 oid_section 开头的其他行,然后重试。 "...没有已知的NID" 不应再次出现。 - Alexandre Fenyo
我按照你说的做了一切,但是Chrome报错了。(NET :: ERR_CERT_COMMON_NAME_INVALID) 实际上,我想做的基本上是使用OCSP在Chrome上验证服务器证书。Firefox可以,但Chrome不行。我没有做我所做的事情。 - Rahmican

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接