我正在尝试使用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
***
你们有什么想法吗?
提前致谢!
答案 0 :(得分:1)
http-conduit上的“name”属性可能是错误的。它应该是端点名称(来自Service元素内),而不是PortType名称。
但是,我建议使用名称的URL。
<http-conf:conduit name="http://localhost:8080/.*" .....> ... </http-conf>
注意末尾的通配符(。*)以匹配所有网址。