但是,我们无法满足策略,并且服务器会记录错误说明:
“WSM-00081: The X.509 certificate is not signed.”
我一直想知道这是什么意思. Oracle文档说明:
WSM-00081: The X.509 certificate is not signed.
Cause: The X509 token used was not signed according to requirements of certificate authentication scenario.
Action: Sign the X509 token (depending upon the reference mechanism used) for certificate authentication.
Level: 1
Type: ERROR
Impact: Security
(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签署的证书进行了检查,但这没有任何区别
>但是,在配置时我们可能会犯下som错误.我们应该尝试一下吗?
>我们需要签署包含在请求中的包含的BinarySecurityToken.
>但是,我不知道我怎么能这样做
解决方法
在配置的绑定元素中,将安全元素模式设置为SecurityMode.Message,将消息元素clientCredentialType设置为MessageCredentialType.Certificate:
<security mode="Message"> <message clientCredentialType="Certificate" algorithmSuite="Default" establishSecurityContext="true" /> </security>
接下来,创建端点行为以解析client certificate的位置:
<behavior name="endpointCredentialBehavior"> <clientCredentials> <clientCertificate findValue="Contoso.com" storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindBySubjectName" /> </clientCredentials> </behavior>