尝试使简单的Hello World(通过SSL)正常工作但收到以下错误:根据验证程序,远程证书无效。
服务器App.config是:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="SSLSecurity">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="mexBehavior" name="HelloServiceLibrary.HelloService">
<clear />
<endpoint address="ws" binding="wsHttpBinding" name="wsEndpoint"
contract="HelloServiceLibrary.IHelloService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="https://localhost:443/hellossl" binding="wsHttpBinding" name="wssslEndpoint"
bindingConfiguration="SSLSecurity" contract="HelloServiceLibrary.IHelloService">
<identity>
<certificateReference x509FindType="FindByThumbprint" findValue="82a39faaeb18bf9585b334ca83264add3d5b26ee" />
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint"
contract="IMetadataExchange">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8989/hello" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
请告知我做错了什么。
更新:证书已成功部署在本地计算机上的受信任的根证书颁发机构中。
答案 0 :(得分:0)
将此添加到您的WCF配置中,让我知道输出。
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.Net" maxdatasize="1024">
<listeners>
<add name="MyTraceFile"/>
</listeners>
</source>
<source name="System.Net.Sockets" maxdatasize="1024">
<listeners>
<add name="MyTraceFile"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add
name="MyTraceFile"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="System.Net.trace.log"
/>
</sharedListeners>
<switches>
<add name="System.Net" value="Verbose" />
<add name="System.Net.Sockets" value="Verbose" />
</switches>
</system.diagnostics>
这是在黑暗中刺伤。
检查以确保将其安装到所有用户。
打开MMC
添加管理单元(证书)
- 检查计算机帐户(下一个)
- 选择您的电脑
完成
现在将证书重新安装到“受信任的根证书颁发机构”,并且所有用户都可以信任该证书。
答案 1 :(得分:0)
不确定这是否对您有所帮助,但我回顾了我的app.config如何设置为几周前我在使用证书时写的简单安全服务。以下是为正确配置服务配置而可能需要考虑的一些注意事项:
<bindings>
<wsHttpBinding>
...
<security>
<transport clientCredentialType="Certificate" />
</security>
</wsHttpBinding>
</bindings>
现在在我的配置中,我定义了一个端点行为,它提供了元数据来告诉服务客户端将使用哪个证书:
<behaviors>
<endpointBehaviors>
<behavior name="ClientBehavior">
<clientCredentials>
<clientCertificate findValue="WcfClient" storeLocation="LocalMachine" storeName="My"
x509FindType="FindBySubjectName"/>
<serviceCertificate>
<authentication certificateValidationMode="PeerTrust" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
答案 2 :(得分:0)
如果您只需要一个安全链接,即仅加密,不进行客户端身份验证,那么您无需设置任何客户端凭据。这就是你应该做的一切:
1.配置IIS以使用SSL
2.在您的服务上配置HTTPS端点
3.配置客户端以使用上述端点
就是这样。如果您的证书无效,则可能必须按照此处所述进行自定义证书验证:MSDN。
祝你好运!