我正在尝试使用CXF Spring配置构建一个SSL安全的Web服务客户端,我想知道如何告诉CXF在我的密钥库中使用此客户端证书 . 这应该存在,因为如果我的密钥库拥有足够的证书,CXF应该如何找到好的证书呢?
这是我的配置:
<http-conf:conduit name="{urn:ihe:iti:xds-b:2007}DocumentRepositoryPortType.http-conduit">
<http-conf:client AutoRedirect="true" Connection="Keep-Alive"/>
<http-conf:tlsClientParameters secureSocketProtocol="SSL">
<sec:keyManagers keyPassword="storepass">
<sec:keyStore type="JKS" password="storepass" file="src/main/resources/keystore.jks" />
</sec:keyManagers>
<sec:trustManagers>
<sec:keyStore type="JKS" password="storepass" file="src/main/resources/truststore.jks" />
</sec:trustManagers>
<sec:cipherSuitesFilter>
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_NULL_.*</sec:include>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http-conf:tlsClientParameters>
</http-conf:conduit>
在里面
<sec:keyManagers keyPassword="
<sec:keyStore type="JKS" password="storepass" file="src/main/resources/keystore.jks" />
</sec:keyManagers>
部分,有没有办法写出类似的东西
alias="mycertificate"
?
我搜索了几个网站但暂时没有结果 .
实际上我的问题是,当我的CXF客户端与SSL安全服务器通信时,会有来自服务器的证书请求,以便用证书来识别自己 . 服务器告诉我它正在等待哪些证书颁发机构,在我的密钥库中我确实有一个证书已经被其中一个机构认证但是我的客户没有证书传输...
以下是SSL日志的外观:
CertificateRequest:
*** CertificateRequest
Cert Types: RSA, DSS,
Cert Authorities:
<CN=****, DC=****, DC=****>
Others authorities...
空客户端证书链:
*** Certificate chain
***
你们有什么想法吗?
提前致谢!
1 回答
很可能http-conduit上的“name”属性是错误的 . 它应该是 endpoints 名称(来自Service元素内),而不是PortType名称 .
但是,我建议使用URL作为名称 .
请注意末尾的通配符( . *)以匹配所有URL .