165

HTTPS経由でJavaWebAPIに接続しようとしています。ただし、例外がスローされます。

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException

オンラインのkeytoolとSSL証明書のチュートリアルから学んだ次の手順に従いました。

  1. HTTPS URLをブラウザーにコピーし、SSL証明書をダウンロードして、InternetExplorerを使用してブラウザーにインストールしました。

  2. 証明書をコンピューター上のパスにエクスポートしました。証明書は次のように保存されました。.cer

  3. keytoolのインポートオプションを使用しました。以下のコマンドはエラーなしで実行されました。

    keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
    
  4. コマンドプロンプトでパスワードの入力を求められ、入力した後、認証されました。

  5. ウィンドウにいくつかのcmd証明書データと署名が印刷され、次の質問が表示されました。

    この証明書を信頼しますか?

    はいと答えました。

  6. 表示されたcmdプロンプト

    証明書がキ​​ーストアに追加されました

    ただし、そのメッセージの後に、別の例外が表示されました。

    keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
    

最後に、キーストアを確認したところ、SSL証明書が追加されておらず、接続しようとしたときに以前に発生したのと同じ例外がアプリケーションで発生します。

(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
4

12 に答える 12

315

これは、管理者モードでコマンドプロンプトを実行していない場合に発生する可能性があります。Windows 7を使用している場合は、実行に移動し、cmdと入力して、Ctrl + Shift+Enterを押します。これにより、管理者モードでコマンドプロンプトが開きます。そうでない場合は、[スタート]->[すべてのプログラム]->[アクセサリ]->[コマンドプロンプト]を右クリックして、[管理者として実行]をクリックすることもできます。

于 2012-07-05T17:58:35.963 に答える
24

Windowsでも同じ問題が発生し、管理者としてcmd.exeを実行することで解決できました([スタート]メニューを右クリックし、[管理者として実行]をクリックします)。

于 2012-05-03T09:07:06.417 に答える
13

キーストアの書き込み権限を確認してください。

于 2012-06-27T16:51:21.483 に答える
2

Windows8 を使用している場合:

  1. スタートボタンをクリック
  2. 検索ボックスに次のように入力します。command prompt
  3. 結果から、右クリックcommand promptして をクリックしますRun as administrator。次に、keytool コマンドを実行します。
于 2016-03-17T06:16:02.197 に答える
2

この問題を修正する権限を自分自身に与えることができます。

cacerts を右クリック > プロパティを選択 > Securit タブを選択 > すべてのグループおよびユーザー名にすべてのアクセス許可を許可します。

これは私にとってはうまくいきました。

于 2016-05-31T22:34:37.500 に答える
0

コマンドプロンプトを管理者として実行しましたが、以下のエラーで機能しませんでした。

'keytool' is not recognized as an internal or external command,
 operable program or batch file.

keytool へのパスがシステム パスに含まれていない場合は、フル パスを使用して keytool を使用する必要があります。

C:\Program Files\Java\jre<version>\bin

したがって、コマンドは次のようになります

"C:\Program Files\Java\jre<version>\bin\keytool.exe" -importcert -alias certificateFileAlias -file CertificateFileName.cer -keystore cacerts

それは私のために働いた。

于 2017-02-14T12:59:18.560 に答える
-2

またはディスクまたはパス (C 以外) を保存できます EX : D\

C:\Program Files\Java\jre1.8.0_101\bin>keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore D:\myserver.jks -dname "CN=myserver,OU=IT-WebDev, O=TIACHOP, L=HCM, ST=0753, C=VN" && keytool -certreq -alias server -file D:\myserver.csr -keystore D:\myserver.jks

ここに画像の説明を入力

于 2016-10-13T13:48:14.357 に答える