相互认证,客户端需要请求以自己的证书和HTTPS服务器可以验证关联基于证书的客户端。我想通了,粗糙的工作流程,但不知道这是否是做的正确方法:正道HTTPS根据我的需要基于证书,即双向HTTPS验证的.NET项目工作证
在客户端:
HttpWebRequest的要求=(HttpWebRequest的)WebRequest.Create(“请求URI” );在服务器端:
//证书是从一个的CertStore X509Certificate2实例或证书文件
request.ClientCertificates.Add(CERT); ;
// REQ是HttpListenerRequest实例
如果(req.ClientCertificateError == 0)
{
X509Certificate2 clientCert = req.GetCli entCertificate;
//验证客户端证书
}
我的问题是:
1)这是这样做的正确方法?
2)在服务器端,一旦获得与请求关联的客户端证书,它将如何验证证书?假设我们可以在服务器上安装相同的客户端证书。
我是新来的安全的东西。真的很感激,如果任何人可以帮助解决这些问题或指向我有用的文件。
感谢您的回答。是的,我会向客户颁发证书。你能否更详细地解释验证部分?假设客户端证书已经安装在服务器的证书存储区中,我该如何比较请求中的证书和本地商店中的证书?通过比较指纹...不? – gigimei 2011-04-11 03:35:43
@ gigimei我不知道是否需要在本地商店安装客户端证书,但我想必须有其他方式。原因在于阅读(或在内部搜索)成千上万的证书需要相当长的时间。至于验证本身 - 您肯定需要通过检查证书的签名来验证完整性。然后你可以比较“拇指印”。 – 2011-04-11 04:57:28