【发布时间】:2015-09-28 15:14:19
【问题描述】:
为什么用 JAVA 编写的 SOAP1.1 Web 服务可能无法识别 WCF 客户端传递的有效证书?
我们从服务中收到 500 错误,表明该服务不信任我们的证书。这可能与 SOAP 标准的 WCF 实现与 Java 服务期望看到的不同有关吗?
这是 WCF 配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="ourCert">
<clientCredentials>
<clientCertificate x509FindType="FindBySubjectName" findValue="MyCompany"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="wsHttpSoap11" >
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="https://{site}.com/site.wsdl"
binding="customBinding"
behaviorConfiguration="ourCert"
bindingConfiguration="wsHttpSoap11"
contract="ServiceContract">
</endpoint>
</client>
</system.serviceModel>
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
</configuration>
【问题讨论】:
-
500 仅表示内部服务器错误。您是否有日志显示内部服务器错误是证书信任问题还是假设?
-
我推荐使用 glassfish metro 生成 java 客户端。它声明与 WCF metro.java.net/guide/ch01.html#ahiar 的兼容性
-
500 只是他们让我们知道出现问题的方式。我们无法访问服务端的日志,否则不会有问题:)
-
好的,如果没有可靠的日志记录信息,将很难知道问题出在哪里,除非有人告诉您问题肯定是证书信任问题......在这种情况下,证书需要共享和导入。你可以用 Firefox 下载他们的证书(谷歌这个过程)并在你最后导入它。
-
没错。我希望在从 WCF 客户端向 Java WS 提供可信证书时存在“已知问题”。 WCF 在支持不同的安全设置组合方面非常灵活,我附加的配置具有最简单的设置之一,可能足够也可能不够。
标签: java c# .net wcf ws-security