对于一个家庭自动化项目,我创建了一个 API(用 ASP.NET 编写,因此托管在 IIS 中),并编写了自己的 Android 应用来与此 API 进行通信。为了防止人们访问此 API 中的特定端点,我想保护那些不应公开的端点。有些端点将保持公开,供我的统计信息仪表板使用。
我有一个客户端 PKI 证书,是从一个官方和政府认可的组织购买的,用于该应用程序,其中包含一个 OCSP 响应器 URL。当应用程序访问受保护的端点时,此证书将包含在内。现在最后一步是服务器在传入请求中验证此证书的有效性,我想到了以下可能的情况:
- 证书有效
- 证书的 CA 层次结构无效(我是一名程序员,如果我误解了这句话,我深表歉意)
- 证书已过期(我认为 OCSP 响应器会返回该信息)
- 未包含证书
IIS 能解决这个问题吗?我只发现了与客户端证书无关的 OCSP 装订。基本上应该取消 TLS 握手,这样 API 就无法访问了。
我使用 HAProxy 将请求路由到网络中的正确服务器。因此,如果 IIS 无法使用,HAProxy 可以做到这一点吗?
谢谢!
答案1
IIS 可以使用 OCSP 验证客户端证书。据我所知,HAProxy 不能。最好的办法是将客户端证书传递到 IIS 后端。
请注意,您只能使用 OCSP 或证书吊销列表 (CRL) 来检查证书的吊销状态 - 仅此而已。
因此,证书的验证仍然包括检查从证书到信任锚的链、检查证书是否过期以及检查证书是否用于正确的密钥使用;无论是否使用 OCSP(或 CRL)。