首页 > 解决方案 > 设置 IIS 客户端证书映射身份验证(客户端需要私钥)

问题描述

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

要求:我想保护我的 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 上,我设置了我的网络服务 @ https://wildcard.com/SSLTest/Connect.asmx并将 SSL 设置设置为:

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

然后,在配置编辑器 -> system.webServer/security/authentication/iisClientCertificateMappingAuthentication

我尝试将 onetoOneMappings 设置为:

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

在上述设置中,证书是使用 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 有什么用?

~谢谢

标签: .netssliisssl-certificateclient-certificates

解决方案


推荐阅读