C# 带有cert auth的WCF服务客户端在调试时工作,但不处于活动状态
Im使用经过证书验证的WCF服务。我在VS调试模式下工作,但在发布和运行时它将无法工作 证书存储在CurrentUser/TrustedPeople中。 这是我的配置行为部分:C# 带有cert auth的WCF服务客户端在调试时工作,但不处于活动状态,c#,asp.net,wcf,web-config,certificate,C#,Asp.net,Wcf,Web Config,Certificate,Im使用经过证书验证的WCF服务。我在VS调试模式下工作,但在发布和运行时它将无法工作 证书存储在CurrentUser/TrustedPeople中。 这是我的配置行为部分: <behavior name="LoadClientCert"> <clientCredentials> <clientCertificate findValue="CN=Certificate1" storeLocat
<behavior name="LoadClientCert">
<clientCredentials>
<clientCertificate findValue="CN=Certificate1"
storeLocation="CurrentUser" storeName="TrustedPeople"
x509FindType="FindBySubjectDistinguishedName" />
<serviceCertificate>
<defaultCertificate findValue="CN=Certificate2"
storeLocation="CurrentUser" storeName="TrustedPeople"
x509FindType="FindBySubjectDistinguishedName" />
<authentication certificateValidationMode="None"
revocationMode="NoCheck" />
</serviceCertificate>
</clientCredentials>
</behavior>
错误消息:请求错误
服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志
我猜IIS用户没有使用证书的权限。但这只是猜测
我在哪里可以找到服务器日志?我尝试了事件查看器,但没有找到任何内容。我还不走运地将其添加到配置中(尝试解决方案后为空):
有什么建议吗?如果您使用的是2 was SSL,即使用SSL保护传输通道,并使用SSL验证您的客户端,则应按如下方式放置证书: 对于服务器证书(.pfx文件): 在本地计算机个人文件夹中安装证书 对于客户端证书: 在服务器计算机(.cer文件)上: 在本地计算机-->受信任人员存储中安装客户端证书 在客户端计算机上(.pfx文件): 在本地用户-->个人存储中安装客户端证书 此外,如果服务器证书是自签名的,请确保在调用服务方法之前在客户端使用以下代码:
System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
{
return true;
};
更新:
您是否使用自签名证书?是的,它们是自签名的证书的位置是否重要?只要在配置中指定了,在哪里查找?这项服务使用常规服务http://Yes 证书需要放在适当的存储区。但是如果我不使用ssl,我应该把它们放在哪里?我已经指定了安装证书的存储区。如果您不想使用SSL,那么只需在您的配置中注释serviceCertificate元素和clientCertificate元素,这将禁用remove 2-way SSLI‘我们让它在本地主机IIS上工作,但当我在live server上发布它时,它仍然会给我相同的错误。我以前遇到的问题是,CSCertificates位于错误的存储中,我必须向证书授予apppool权限。因此,我在我的web服务器上得到的是:LocalComputer/个人中的clientcert和LocalComputer/受信任人员中的服务器证书。我知道这并不是很重要,但它仍然会说“错误请求”-“错误消息:请求错误服务器在处理请求时遇到错误。有关更多详细信息,请参阅服务器日志。”有什么建议吗?
System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
{
return true;
};