MTLS 证书被 403.16 拒绝

MTLS certificate is rejected with 403.16

我正在与第 3 方集成,第 3 方在使用 MTLS 连接时提供了客户端证书。

他们使用的证书是由第 3 方给我们的 CSR 生成的。它针对我们的一个 CA 采取行动并返回给第 3 方。我们的一位管理员执行了 CSR,并向我提供了该证书的 public 密钥,以及 CA 的 public 密钥。

CA 的 public 密钥已添加到计算机证书存储区 Trusted Root Certification Authorities 并且根据 docs page for troubleshooting 403.16 的指导,来自 CSR 的 public 密钥已添加到 Intermediate Certification Authorities 商店。

已使用配置编辑器在路径 system.webServer/security/authentication/iisClientCertificateMappingAuthentication 通过 manyToOneMappings 配置 IIS,以根据提供的证书为用户分配 Windows 帐户。证书配置为与通用名称 (CN) 匹配并且配置正确:

当第 3 方连接时,IIS 日志显示 403.16 错误。

我相信这是正确配置的。我已经使用 makecert.exe 生成了我自己的证书并证明这是有效的。

CAPI2 日志显示以下错误消息,按收到的顺序从第一到最后:

  1. 指定的网络资源或设备不再可用。
  2. 吊销功能无法检查吊销,因为吊销服务器离线。
  3. 证书对于请求的用途无效。

我预计 #1 是尝试检查吊销的结果。

一些问题:

  1. 未检查吊销是否会导致 403.16?
  2. 从 CSR 生成的证书表明它的用途是“服务器身份验证”。 “客户端身份验证”是 MTLS 工作的必要目的吗?

提前致谢。

以防其他人遇到这个问题并想知道我们是如何解决这个问题的。

在我们的实例中,前两个错误与证书吊销检查有关。您可以按照说明 here.

禁用证书吊销检查

最后的错误是因为证书没有目的Client Authentication。该证书似乎需要 Server AuthenticationClient Authentication

一旦这三个问题得到解决end-to-end 沟通就成功了。