asp.net - 在 SSL 上使用服务器证书时出现 HTTP 错误 403.7

标签 asp.net .net web-services iis ssl

我正在尝试通过使用服务器证书来保护我们的网络服务。为了进行测试,我在 IIS 管理控制台上创建了一个自签名证书并将站点配置为使用该证书。 在 IIS 上,我创建了 HTTPS 绑定(bind),并将其配置为使用证书。在我的网络服务的虚拟路径上启用 SSL 并将其设置为需要客户端证书。

右键单击证书,将其与密码一起导出到测试客户端的文件系统。

我使用以下代码调用使用证书作为客户端证书的网络服务:

SSLServiceReference.DataAccessService lService = new SSLServiceReference.DataAccessService();
X509Certificate2 lCert = new System.Security.Cryptography.X509Certificates.X509Certificate2(@"C:\Users\Dev06\Documents\TestSamsung2Cert.pfx", "qwerty");
lService.ClientCertificates.Add(lCert);
lService.Credentials = CredentialCache.DefaultNetworkCredentials;
DataSet lSet = lService.GetSites();

但是在调用 GetSites() 时我收到了 403.7 http 错误。 我究竟做错了什么?我的意图是要求使用 Web 服务的客户出示此证书,以便只有他们可以调用它。

IIS 7

感谢您的指点。

最佳答案

澄清一下,您不需要服务器和客户端使用相同的证书,事实上,为每个服务器和客户端使用唯一的证书可能是更好的主意。服务器端的 IIS 将对几乎所有客户端证书感到满意(除非您以其他方式配置它或编写代码来检查证书并根据某些字段批准/拒绝)。也就是说,我认为这不是您遇到的问题的原因。这可能是由于客户端无法真正访问证书或其私钥。

如果您将 pfx 证书“安装”到客户端计算机的证书存储区,您可能会有更好的运气。然后您需要将其再次“导出”为 .cer 文件为运行您的客户端应用程序(即网络服务)的帐户配置对私钥的访问权限。

请看这里,如果您遵循这些步骤(例如,将 PFX 安装到客户端的本地机器存储并配置对其私钥的访问权限),您应该开始工作:

http://msdn.microsoft.com/en-us/library/ff649203.aspx

我不确定您使用的是哪个 IIS 版本,但实际上,较新的版本使此过程更容易一些。我还发现,当事情真的很奇怪时,使用 WireShark 等工具检查初始 SSL 握手流量可能会有所帮助。它可以帮助您确定问题出在客户端还是服务器上。在这种情况下,它看起来像客户端。

关于asp.net - 在 SSL 上使用服务器证书时出现 HTTP 错误 403.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727572/

相关文章:

c# - 可以以声明方式设置 TextBox 文本吗?

c# - 如何使 Razor View 引擎使用 C# 6.0

c# - License.licx 文件和许可/未许可机器

c# - 如何将可变数量的参数传递给网络服务

web-services - 使用 InstallAware 部署 Web 服务

web-services - 使用WS-UsernameToken认证的SOAP请求示例

asp.net - 是 SQL 注入(inject)吗?

c# - asp.net 而第一个请求处理允许点击第二个请求

asp.net - 如何在 Visual Studio 中使用配置转换强制替换元素?

c# - 仅更改 RichTextBox 字体系列而不更改 FontSize