为什么用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>
答案 0 :(得分:1)
证书是根据信任链进行验证的,因此生成框架不相关。另请注意,您使用传输级别证书,因此SOAP不太可能成为错误源。
我建议你做以下事情:
如果WCF仍然失败,那么比较java和wcf客户端生成的传出SOAP(您可以使用fiddler捕获它)。这可能暗示其他差异(也许你实际上需要一个消息证书而不是传输,也许你的肥皂版本不匹配等)。