2013-07-05 82 views
1

當我嘗試在weblogic中調用https服務調用時,我收到ssl握手失敗。 我已將服務器證書添加到weblogic信任庫 - 「cacerts」中。用於添加信任存儲在WebLogic啓動腳本weblogic ssl握手失敗信任存儲問題

命令:

 JAVA_OPTIONS="-Dweblogic.security.SSL.trustedCAKeyStore="/weblogic92/server/lib/cacerts" ${JAVA_OPTIONS}" 

出口JAVA_OPTIONS

我失去任何東西 - 任何指針,以解決這個問題?

使用SSLPoke.java測試了應用程序服務器框中的ssl連接,並且成功。

java -Djavax.net.ssl.trustStore=/weblogic92/server/lib/cacerts 
    -Djavax.net.ssl.trustStorePassword=changeit SSLPoke 192.16.2.6 8443 

WebLogic Server日誌跟蹤:

 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1628) 
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:230) 
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:224) 
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1027) 
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:120) 
    at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:574) 
    at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:510) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:888) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1117) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:629) 
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
+0

難道是引號問題?嘗試使用JAVA_OPTIONS =「 - Dweblogic.security.SSL.trustedCAKeyStore = /weblogic92/server/lib/cacerts」$ {JAVA_OPTIONS} – Xargos

+0

@Xargos - 沒有它不是引號問題,我甚至嘗試使用一個變量。雖然SSL選項顯示在啓動日誌中,但當我執行ssl調用時 - 我在應用程序級別出現錯誤。 – challenge

+0

所以當你做'keytool -v -list -keystore/weblogic92/server/lib/cacerts'時,你可以看到你的服務器?你也可以嘗試:'-Djavax.net.ssl.trustStore = /weblogic92/server/lib/cacerts' –

回答

1

還有其他一些事情,你可以嘗試:

  1. 您是否也嘗試JAVA_OPTIONS =「$ {JAVA_OPTIONS} -Dweblogic.security .SSL.trustedCAKeyStore = /weblogic92/server/lib/cacerts「

  2. 嘗試添加證書■使用控制檯(服務器 - > server_name->密鑰庫)

  3. 您可能還需要添加以下Java選項:

    1. -Dweblogic.security.SSL.verbose =真

    2. -Dweblogic.security.SSL.enable.renegotiation =真

    3. -Dsun.security.ssl.allowUnsafeRenegotiation =真

  4. 在servers-> server_name-> SSL(高級)中選中使用JSSE SSL。

  5. 檢查使用服務器證書。

  6. 更改主機名驗證爲無

+0

我看不到任何選項「在服務器 - >服務器名 - > SSL(高級)選中使用JSSE SSL。」在weblogic管理控制檯中。我使用9.2.2 weblogic服務器。試過選項1和3. – challenge

+0

目前在日誌中,我可以看到這個設置「java.protocol.handler.pkgs = weblogic。utils | weblogic.utils | weblogic.utils | weblogic.net「,我是否需要做任何更改handler.pkgs? – challenge

+0

我有一個管理實例和2個管理實例 - 上面設置1和3應用於管理實例中的啓動腳本我需要將它應用到管理實例嗎? – challenge

0

這是一個引號的問題。刪除毫無意義的內引號:

JAVA_OPTIONS="-Dweblogic.security.SSL.trustedCAKeyStore=/weblogic92/server/lib/c‌​acerts ${JAVA_OPTIONS}"