【问题标题】:SSL Handshake between two WebApps两个 WebApp 之间的 SSL 握手
【发布时间】:2011-09-12 18:51:33
【问题描述】:

我在需要双向 SSL 身份验证的 SUNWappserver 上部署了一个 webapp-1。我可以为它写一个java client-1,效果很好。

但是,当我将 webapp-1 的 client-2 作为 web 服务(而不是独立的 java 程序)编写时,我遇到了问题。

我在 jetty-8 服务器上部署 client-2。在 SSL 握手期间,Jetty 首先从 SUNWappserver 获取证书(这没关系:找到受信任的证书),然后 Jetty 从 SUNWappserver 接收一个 CertificateRequest(连同 Cert Authorities)。然而,Jetty 只是回复一个空的证书链。

.
.
*** CertificateRequest
Cert Types: RSA, DSS
Cert Authorities:
****<CNs removed from here>****
*** ServerHelloDone
*** Certificate chain
***
*** ClientKeyExchange, RSA PreMasterSecret, TLSv1
.
.

我不确定那里发生了什么。我需要启用 jetty-ssl.xml 配置中的某些设置,以便它回复证书链?以下是我现在正在使用的选项

<Set name="KeyStore"><SystemProperty name="jetty.home" default="." />/server-certs/keyStore.jks</Set>
<Set name="KeyStorePassword">$PASS</Set>
<Set name="KeyManagerPassword">$PASS</Set>
<Set name="TrustStore"><SystemProperty name="jetty.home" default="." />/server-certs/trustStore.jks</Set>
<Set name="TrustStorePassword">$PASS</Set>
<Set name="certAlias">$CORRECT_ALIAS</Set>
<Set name="wantClientAuth">true</Set>

当我将客户端用作独立的 Java 应用程序(而不是部署在码头服务器上)时,我的 trustStore 和 keyStore 可以正常工作。当我启动 Jetty 服务器时,Jetty 正在正确读取 keyStore 和 trustStore。我还尝试在启动 Jetty 服务器时将 -Djavax.net.ssl.trustStore 等作为 jvm 选项。

【问题讨论】:

    标签: ssl certificate jetty cxf x509certificate


    【解决方案1】:

    刚刚弄清楚发生了什么。 我在码头服务器上部署的 client-2 是一个 cxf 客户端。原来除了在 jetty-ssl.xml 中设置 keyStore 和 trustStore 之外,我还需要为 cxf 设置它(在 java-code 中或使用 cxf.xml)

    否则,客户端(部署在 jetty 服务器上)不会发出任何错误消息(例如,找不到 cxf keyStore 等),而只是将空白证书链发送回 SUNWappserver。某种消息将有助于找出原因。

    在相关的说明中,我们还应该在 jetty-ssl.xml 中设置以下内容。

    <Set name="needClientAuth">true</Set> 
    

    否则,即使客户端(正在连接码头服务器)向码头服务器发送空白的错误证书,服务器也会忽略并且不会给出任何错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多