设置IIS客户端证书映射身份验证(客户端需要私钥)

时间:2018-05-31 17:22:34

标签: .net ssl iis ssl-certificate client-certificates

我已经开始开发安全的Web服务,我正在学习SSL概念。

要求:我想保护我的Web服务(允许访问将客户端证书添加到其请求中的Web请求)。客户端可以将桌面/ Web /控制台应用程序的请求发送到我们的Web服务。

我拥有的(资源):

发给我的网站* .wildcard.com的有效证书,此证书安装在我的具有公共IP的服务器计算机上,并且域映射到wildcard.com。此证书用于为我的站点设置SSL绑定(443)。 该证书的目的是服务器认证(1.3.6.1.5.5.7.3.1) 客户端身份验证(1.3.6.1.5.5.7.3.2)。

到目前为止我一直在尝试:

服务器端环境

在IIS上,我设置了我的webservice @ https://wildcard.com/SSLTest/Connect.asmx并将SSL设置设置为:

[SSL设置IIS](https://drive.google.com/file/d/1BGqXjj1Xh365lSm0NU_jXr0CheR6DpK5/view?usp=sharing

然后,在配置编辑器下 - > system.webServer /安全/认证/ iisClientCertificateMappingAuthentication

我尝试将onetoOneMappings设置为:

[OnetoOneMapping](https://drive.google.com/file/d/1vga_cieP-8iJzl9aLflGTFP-yDaG0xn4/view?usp=sharing

在上述设置中,certificate是使用SSL证书生成的.cer文件(公钥)的开始和结束证书行之间的值。

客户端环境:

我编写了一个控制台应用程序(C#.net),它使用.net框架的HTTPWebRequest发送SOAP请求,并将客户端证书添加到请求对象

webRequest.ClientCertificates.Add(cert);

使用以下命令从客户端计算机中挑选此证书:

X509Store computerCaStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);

然后将请求发送到https://wildcard.com/SSLTest/Connect.asmx。 但我得到了,错误403.7禁止错误。当我发送证书(带私钥)时,这就行了。

是否必须在请求中从客户端计算机发送私钥? 如果是,则安全性会受到影响,因为我们无法与其他人共享私钥。 因此,我将如何将公钥分发给客户,以便他们可以访问Web服务。或许我误解了这个场景?有什么用? IIS上的iisClientCertificateMappingAuthentication?

〜谢谢

0 个答案:

没有答案