我已经开始开发安全的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?
〜谢谢