0

我有一个 WPF 应用程序,我正在使用 WCF 通过 Https 使用 php webservice,我在服务器上创建了一个自签名证书来测试它,并将客户端配置为使用这个证书,但是出现了一个异常并告诉我也需要通过客户端证书。

其实我只是想保护传输的消息,我不需要对客户端进行身份验证,所以我怎么能禁用客户端身份验证。

我正在使用带有 clientCredentialType“Certificate”和 .Net 3.5 的安全模型“Transport”。

提前感谢您的意见..

更新

正如我所提到的,我不需要该服务来验证客户端的身份,因此我使用了带有匿名客户端的传输安全性,而不是带有证书身份验证的传输安全性,以下是客户端配置:

<system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="bindingName" closeTimeout="00:0:04"
       openTimeout="00:00:04" receiveTimeout="00:00:04" sendTimeout="00:00:04"
       allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
       messageEncoding="Text" textEncoding="utf-8"
       useDefaultWebProxy="true">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"> 
      <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<client>
  <endpoint address="https://myServer/myApp/myWebService"
    binding="wsHttpBinding" bindingConfiguration="bindingName"
    contract="xx.yy" name="zz">
  </endpoint>
</client>

现在的问题是:当我调用服务时出现超时错误“对 {My Service URL} 的 HTTP 请求已超过分配的超时”。

附加信息:该服务在 HTTP 上运行良好,问题仅在我移至 HTTPS 时出现,如果我通过 Internet 浏览器打开它,我可以看到服务 WSDL,但浏览告诉我有不安全的资源,我应该强制它显示所有资源以便查看 WSDL。

4

1 回答 1

0

可能你的问题是:

// 创建端点地址。请注意,机器名称
// 必须与用于验证服务的 X.509 证书的主题或 DNS 字段相匹配。

因此,请查看您的客户端配置,并检查证书部分findValue属性以匹配您的证书。

喜欢

<clientCertificate findValue="contoso.com"
   storeLocation="CurrentUser"
   storeName="My"
   x509FindType="FindBySubjectName" />

请参阅有关使用证书身份验证的传输安全性的更多信息。

于 2013-04-14T04:48:27.297 回答