web-dev-qa-db-ja.com

Java証明書のインポート後のKeytoolエラー、「keytoolエラー:Java.io.FileNotFoundException&Access Denied」

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

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

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

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

  2. 証明書をコンピューター上のパスにエクスポートすると、証明書は.cerとして保存されました

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

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

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

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

    はいと答えました。

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

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

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

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

最後に、キーストアをチェックしたとき、SSL証明書は追加されず、アプリケーションは、接続しようとして以前に取得していたのと同じ例外を示します。

(javax.net.ssl.SSLHandshakeException:Sun.security.validator.ValidatorException)
103
cyber101

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

230

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

19
daniel

ローカルキーストアに証明書をインポートするときに同じ問題が発生していました。 keytoolコマンドを発行するたびに、次のエラーが発生しました。

証明書がキ​​ーストアkeytoolエラーに追加されました:Java.io.FileNotFoundException:C:\ Program Files\Java\jdk1.8.0_151\jre\lib\security(Access is denied)

私のための次の解決策の仕事。

1)管理者モードでRusでコマンドプロンプトを実行していることを確認してください

2)現在のディレクトリを%Java_HOME%\ jre\lib\securityに変更します

3)次に、以下のコマンドを発行します

keytool -import -alias "mycertificatedemo" -file "C:\ Users\name\Downloads\abc.crt" -keystore cacerts

3)パスワードchangeitを与える

4)yを入力

5)「証明書がキ​​ーストアに追加されました」という成功時に次のメッセージが表示されます

-keystore param valueでのみ「cacerts」を指定していることを確認してください。これは、「C **:\ Program Files\Java\jdk1.8.0_151\jre\lib」のようなフルパスを指定したためです。\security ** "。

これがうまくいくことを願って

11
Waqas Ahmed

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

9
partha saradhi

Macユーザーの場合、必ずSudoを確認し、プロンプトが表示されたら最初に管理者パスワードを入力します。その後、実際に変更しない限り、通常「changeit」であるキーストアパスワードが続きます。

2
Vineet Kothari

Windows8を使用している場合:

  1. スタートボタンをクリック
  2. 検索ボックスに「command Prompt」と入力します
  3. 結果から、command Promptを右クリックし、Run as administratorをクリックします。次に、keytoolコマンドを実行します。
1
arungopal

PowerShellを使用するとWindows 10でも同じ問題が発生しますが、cmdを使用している場合は機能します。

0
ery

コマンドプロンプトを管理者として実行することもできましたが、次のエラーが表示されて機能しませんでした。

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

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

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

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

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

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

0
sher17