5

为了解决 SSL 终止负载平衡器的问题(它不会将客户端证书转发到应用程序服务器),我们的 ISP 已配置我们的环境,以便客户端证书在 HTTP 标头中转发到真实服务器(如 X-客户证书)。

我将使用映射到已颁发证书的序列号的 PIN 对客户进行身份验证。但是如何从自定义标头中获取证书?

4

1 回答 1

6

我假设您知道您可以使用以下方式获取证书数据

String s = Request.Headers["X-Client-Cert"];

现在的问题是证书以哪种格式添加到标题中。我会假设它是用 Base64 编码的。

byte[] certdata = Convert.FromBase64String(s);

然后您可以从中创建证书对象:

X509Certificate cert = new X509Certificate(certdata);

根据负载均衡器是否检查客户端证书的有效性(以及它是否已由正确的根 CA 签发),您必须自己检查证书的有效性。

之后,您可以通过读取序列号cert.GetSerialNumber();

于 2012-06-27T09:06:30.460 回答