我正在使用经过身份验证的WCF服务。我在VS debugmode中工作,但是当我发布并运行它时将无法正常工作。
cerificatesd存储在CurrentUser / TrustedPeople中。 这是我的配置行为 - 部分:
<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用户无权使用证书。但这只是猜测。
我在哪里可以找到该服务器日志?我尝试了事件查看器,但我没有找到任何东西。我也把这个添加到我的配置中没有运气(尝试解决方案后它是空的):
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="f:\logs\messages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="3000"
maxSizeOfMessageToLog="2000"/>
</diagnostics>
有什么建议吗?
答案 0 :(得分:2)
如果您使用2是SSL,即使用SSL保护传输通道并使用SSL验证您的客户端,则证书应按如下方式放置:
对于服务器证书(.pfx文件):
在Local Machine Personal文件夹中安装证书。
对于客户证书:
在服务器计算机(.cer文件)上: 在本地计算机中安装客户端证书 - &gt;受信任的人民商店
在客户端计算机上(.pfx文件): 在本地用户中安装客户端证书 - &gt;个人商店
此外,如果服务器证书是自签名的,请确保在调用服务方法之前在客户端使用以下代码:
System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
{
return true;
};
更新: