7

我正在开发一个必须与 Oracle WebLogic 服务对话的 WCF 客户端。该服务强制执行相互证书身份验证。

但是,我们无法满足该策略,并且服务器记录了一条错误消息:

“WSM-00081:X.509 证书未签名。”

我一直想知道这到底是什么意思。Oracle 文档指出:

WSM-00081:X.509 证书未签名。

原因:使用的 X509 令牌没有按照证书认证场景的要求进行签名。

行动:签署 X509 令牌(取决于使用的参考机制)进行证书身份验证。

1级

类型:错误

影响:安全

( http://docs.oracle.com/cd/E25054_01/core.1111/e10113/chapter_wsm_messages.htm )

经过一番研究,我们发现我们可以通过设置禁用服务策略配置文件中的检查is-signed="false

<orasp:x509-token orasp:enc-key-ref-mech="direct" orasp:is-encrypted="false"
              orasp:is-signed="false"
              orasp:rcpt-enc-key-ref-mech="direct"
              orasp:rcpt-sign-key-ref-mech="direct"
              orasp:sign-key-ref-mech="direct"/>

我的两个理论:

  • 证书需要由 CA 签署
    • 我们使用由 CA 签名的证书进行了检查,但这没有任何区别
    • 但是,我们在配置它时可能会犯一些错误。我们应该试一试吗?
  • 我们需要对请求中包含的 BinarySecurityToken 进行签名。
    • 但是,我不知道我该怎么做

我是否完全误解了这个主题,或者你们中的任何人都可以指出问题可能是什么以及如何解决它?

4

1 回答 1

0

您需要签署安全令牌作为请求的一部分。

在配置的绑定元素中,将安全元素模式设置为SecurityMode.Message并将消息元素 clientCredentialType 设置为MessageCredentialType.Certificate

<security mode="Message">
    <message clientCredentialType="Certificate"
        algorithmSuite="Default"
        establishSecurityContext="true" />
</security>

接下来,创建一个端点行为来解析客户端证书的位置:

<behavior name="endpointCredentialBehavior">
    <clientCredentials>
        <clientCertificate findValue="Contoso.com" 
            storeLocation="LocalMachine"
            storeName="TrustedPeople"
            x509FindType="FindBySubjectName" />
    </clientCredentials>
</behavior>
于 2012-10-18T21:46:34.657 回答