引入了 AD CS 证书透明度

适用于: Windows Server 2016

概述


透明胶片 (CT) 是传输层安全 (TLS) 生态系统,从而可公开审核解决担忧误已颁发的证书和证书抵赖的新互联网标准的证书。而 CT,作为域所有者观注的证书颁发给您的域,除非您自己请求它没有方法。通过使用 CTs,很容易审计的证书的证书颁发机构 (CA) 颁发,并确定它们是否符合标准强制 CA 和浏览器论坛 (CAB 论坛) 的质量。

CT 需要由公用 CA 颁发的所有 TLS 证书都登录可公开访问的日志服务器。若要确保所有的证书都登录,web 浏览器支持 CT *将验证每个证书都有相应签名证书时间戳 (SCT),与之相关联。这些 SCTs 用作证明,日志中包含的证书。未能在 TLS 握手过程中提供 SCT 向用户返回一条警告。

* Google 宣布在 2 月 6 2018年证书透明度将同时在 4 月 30,2018年其 Chrome 浏览器开始强制实施。

用于验证证书透明度的呼叫流


用于创建和验证证书的过程进行更新,如下所示。

  1. 服务器操作员购买来自 CA 的证书。
  2. CA 将验证服务器操作员通过域验证 (DV)、 组织验证 (OV) 或扩展验证 (EV)。
  3. CA 创建precertificate。[新]
  4. CA (或客户端) 登录 CT 日志服务器 precertificate。日志服务器将返回一个签名的证书的时间戳 (SCT)。[新]
  5. CA 颁发的安全套接字层 (SSL) 证书。

的 SSL 证书通常包括 SCT。但是,不需要证书包括 SCT。在使用浏览器访问了和服务器之间的 TLS 连接时,出现以下情况:

  1. 浏览器在 TLS 握手过程验证的 SSL 证书。
  2. 浏览器验证的 TLS 握手,通过 OCSP 装订 (目前只支持通过 IIS),期间提供 SCT 通过 TLS 扩展,或 (很可能) 嵌入到证书中的信息。
  3. 浏览器验证由在其内存中受信任的日志服务器列表中列出的日志服务器颁发的 SCT。[新]
  4. 该浏览器建立与服务器的连接。
  5. SSL 证书加密浏览器和服务器之间的所有数据。

    过程流程图

启用证书在 AD CS 中的透明度


若要启用 Active Directory 证书服务 (AD CS) 中的 CA 上的证书透明度,将其打开通过使用以下注册表项:

  1. 创建名为CertificateTransparencyFlags,一个注册表值,然后键入REG_DWORDHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA Name>.
  2. 启用在CertificateTransparencyFlags (值 0x1) 位 0x1。默认情况下,此功能被禁用。

位在CertificateTransparencyFlags (值 0x0) 0x1 清除禁用功能。新的 CT 请求将被拒绝,并将不颁发中间跃点请求。

更改添加到 AD CS 来支持证书透明度


必须更改调用 AD CS 来创建证书的应用程序来支持的"Precertificate"调用更新以下:

  1. 若要选择加入的每个请求的证书透明度,调用ICertRequest::Submit并设置CR_IN_CERTIFICATETRANSPARENCY标志。
  2. 在收到precertificate之后,调用服务应添加公用 CT 日志存储库返回的 precertificate。
  3. 当 precertificate 添加到 CT 日志时,会返回 SCTList。
  4. 若要完成该请求并颁发证书,调用ICertRequest::Submit并设置CR_IN_SIGNEDCERTIFICATETIMESTAMPLIST标志

    请遵循以下准则:
     
    • 从以前的调用 SCTs 应并入聚合的列表 (按照RFC)。
    • 默认情况下,CA 强制实施 1 K.SCTList 最大大小标准的 SCTList 应该是大约 100 个字节。设置注册表MaxSCTListSize REG_DWORD 进行自定义。
    • SCTList 将验证语法和基本语义 (设置预期值)。
    • 它发出之前,X.509 证书将再次与进行比较原始 precertificate (在RawPrecertificate列中) 以防止它变得无效。有关详细信息,请参阅RFC 6962 第 3.2 节
    4093260_client CA 图表

下列自定义支持的证书下的透明的 AD CS 实现HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA Name>.

  1. 设置MaxSCTListSize (REG_DWORD) 自定义 SCTList 接受,以字节为单位的最大值。默认设置为 1024 字节。
  2. 设置CTInformationExtensionOid (REG_SZ) 可自定义的 OID 在颁发的证书中包含到 CA 中的第二个跃点返回的二进制数据。(这可能是 SCTList,如果 CT v1 或 TransItemList 如果 CT v2 或任何其他内容。)
  3. 设置 0x2 位在CertificateTransparencyFlags REG_DWORD 禁用验证到 CA 中的第二个跃点返回的二进制数据。(如果您想要使用 TransItemList 或其他自定义的二进制数据这使用。)否则,CA 执行基本的 CT v1 SCTList 语法验证。