我可以禁止 IIS 通过 AIA 获取中级 SSL 证书吗?

我可以禁止 IIS 通过 AIA 获取中级 SSL 证书吗?

根据这个答案 IIS 可以使用颁发机构信息访问证书扩展来检索丢失的颁发者证书

以下是场景。有一个 IIS 安装,其中包含一个具有 SSL 证书的 HTTPs 端点。通常,IIS 所有者还必须将所有中间证书安装到本地“中间颁发机构”(“CA”) 存储中,以便当客户端连接时,服务器可以发送除根证书之外的所有链。但是 IIS 所有者可能会忘记安装中间证书。然后根据该答案,IIS 将使用 AIA 并检索中间证书并继续将其提供给所有客户端。

看起来这是默认行为,我找不到如何改变它。

我可以禁止 IIS 获取中间证书吗?有什么设置吗?

答案1

看起来没有关于此行为的详细文档,但少量的黑盒测试表明此行为始终存在,并且只能通过使用防火墙规则阻止服务器和 CA 基础架构之间的连接来抑制。以下是使用 Azure Web Roles osFamily=3(Windows Server 2012) 执行此操作的方法:

  1. 在 .csdef 中不要列出<Certificates>元素下的中间证书。
  2. 推断 CA 基础设施响应的 IP 地址范围。为此,请检查您的证书并在证书属性中找到一些 AIA 或 OCSP URI,然后使用它ping来查找 IP 地址。
  3. 创建一个网络安全组在 Azure 中使用防火墙规则允许来自任何地址的入站连接(以便您可以访问您的服务并验证 SSL 功能)并禁止到 CA 的 IP 范围的出站连接(这是实验的关键)。
  4. 创建一个虚拟网络在 Azure 中创建一个子网,并将该子网绑定到上面的网络安全组。
  5. 更改 .cscfg,添加一条<NetworkConfiguration>指令,将服务部署到之前创建的虚拟网络中,并将 Web 角色部署到之前创建的子网中(关键点)。将实例数设置为 1,以便于测试。

现在您已经准备就绪。部署您的服务并观察第三方工具报告未提供中间证书。将防火墙规则更改为“允许”,然后重新映像角色实例 - 一旦重新启动,第三方工具就会报告中间件现已提供服务。将规则更改为“拒绝”,然后重新映像实例-中间体不再提供服务。

这次黑盒测试证明证书安装过程可以利用 CA 在线基础设施。如果 CA 在线基础设施无法访问,则中间证书将无法在线获取。目前尚不清楚它是 IIS 的一部分还是 Windows 的一部分,但这也许并不重要。

这就是为什么 Azure 云服务应始终在 .csdef 中列出所有中间证书,以确保无论部署时 CA 基础设施是否可访问,它们都被部署到实例上。

相关内容