有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java CXF SSL Spring配置空客户端证书链

我正在尝试使用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
Cert Types: RSA, DSS, 
Cert Authorities:
<CN=****, DC=****, DC=****>
Others authorities...

空客户端证书链:

*** Certificate chain
***

你们知道吗

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    http管道上的“name”属性可能是错误的。它应该是端点名称(在服务元素中),而不是端口类型名称

    不过,我建议使用URL作为名称

    <http-conf:conduit name="http://localhost:8080/.*" .....>
    ...
    </http-conf>
    

    请注意末尾的通配符(.*)以匹配所有URL