2012-10-18 6 views
10

もう一度、SSLPeerUnverifiedの厄介な問題ですが、私は自己署名証明書を使用していません。 httpsを使用してホストに接続しようとしています。このホストは正しい証明書を持っていますが、FirefoxもHttpsUrlConnectionも問題はありません。 しかし、HttpClientを使用して接続しようとすると、恐ろしい例外が発生します。SSLPeerUnverifiedException:ピアが認証されていない

手がかりはありますか?または近くに見えるように先端?

ありがとうございます!

編集:デバッグ出力

メイン、例外処理:

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 

メイン、のgetSessionでのIOExceptionを():

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 

答えて

24

あなたがに証明書をインポートする必要があると思われますJVMが使用している信頼できるキーストア。アプリケーションで別の信頼できるキーストアを使用していない場合、これは "cacerts"になります。

ステップガイドは「How to Fix 'SSLPeerUnverifiedException: peer not authenticated' Exception in Groovy/Java」です。

ショートバージョン:

  1. 次のコマンドを実行し、URLと$ADDRESS、マイナス置き換える "HTTPSを://":

    echo -n | openssl s_client -connect $ADDRESS:443 | \ 
        sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/$ADDRESS.cert 
    
  2. 次のコマンドを実行して、$ALIAS置き換えますキーの短縮名$PATHにJREのcacertsへのパスを持つ$ADDRESSの証明書名を使用します。

    sudo keytool -importcert -alias "$ALIAS" -file /tmp/$ADDRESS.cert \ 
        -keystore $PATH/cacerts -storepass changeit 
    
+0

2日間。あなたの投票良い人を取る。 –

関連する問題