3

所以,我有以下系统:有一个客户端应用程序,它请求服务如下:

blar.ServiceSecurity wsSecurity = new blar.ServiceSecurity();
wsSecurity.Url = this.tURL + "Security.asmx";
CookieContainer cc = new CookieContainer();
wsSecurity.CookieContainer = cc;
wsSecurity.ClientCertificates.Add(X509Certificate.CreateFromCertFile(certPath));

blar.LoginResult lr = wsSecurity.Login(login, password);

然后,this.tURL + "Security.asmx"'Login方法的 web 服务必须从以下位置获取 ClientCertificate (certPath):

Context.Request.ClientCertificate.Certificate;

并用它做点什么。

有两个问题:
如果 IIS 的配置显示Require client certificates,调用 Login 函数时出现403.7错误;
如果 IIS 的配置显示Accept client certificates,我得到CryptographicException "m_safeCertContext is an invalid handle";

但是,只有当客户端在 Windows 7 x64 上运行时才会出现这些问题,当在 Windows XP 或 Windows Server 2003 上启动时,它运行良好。

ca 安装在两台机器上,所有测试用例的配置似乎完全相同,
所以我的问题是“这到底是什么?”

4

1 回答 1

2

我没有立即发现您的代码或配置有任何问题,因此您可能会发现这些工具有助于您自己找出问题:

  1. IIS 的SSL 诊断(或 IIS 7,请参阅
  2. .NET 网络跟踪
  3. Fiddler HTTP(S) 代理调试器(如何解密 SSL
  4. SSL 跟踪
于 2011-03-22T17:59:15.770 回答