我正在呼叫远程服务并使用证书进行身份验证。使用Console App进行测试时,一切正常。从ASP.NET网站(.NET 4.0,IIS7)调用时,我收到响应代码401 - Unauthorized。
我使用以下代码添加证书:
var client = new TheGeneratedProxy();
client.ClientCertificates.Add(new X509Certificate("D:\cert.pfx", "myPassword"));
(注意:我还使用IE将.pfx加载到本地证书存储区。证书已加载到我的“个人”商店 - 所以我怀疑这是问题,因为网站将在不同的帐户。)
答案 0 :(得分:0)
我认为问题是您的IIS用户(网络服务/ ASPNET)无法访问证书。要授予网络服务以访问商店中的证书,请下载以下工具:winhttpcertcfg(http://www.microsoft.com/downloads/details.aspx?familyid=c42e27ac-3409-40e9-8667-c748e422833f&displaylang=en)
现在打开命令提示符并输入:
winhttpcertcfg –g –c LOCAL_MACHINE\My –s ORGNAME –a "Network Service"
请注意,“网络服务”可以替换为任何其他帐户。即如果您已为应用程序池配置了自定义用户,则应将此用户设置为-a参数的值。
ORGNAME应替换为您在创建证书期间指定的组织名称。