証明書をJVMキーストアにインポートする必要があります。私は以下を使用しています:
keytool -import -alias daldap -file somecert.cer
だから私はおそらく私の呼び出しを次のようなものに変更する必要があります:
keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
証明書をJVMキーストアにインポートする必要があります。私は以下を使用しています:
keytool -import -alias daldap -file somecert.cer
だから私はおそらく私の呼び出しを次のようなものに変更する必要があります:
keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
回答:
キーストアはにありますJAVA_HOME---> JRE -->lib---> security--> cacerts
。JAVA_HOMEが構成されている場所、おそらくこれらの場所の1つを確認する必要があります。
コンピュータ--->詳細->環境変数---> JAVA_HOME
サーバー起動バッチファイル。
インポートコマンドで-keystore cacerts(cacertsとだけ言うのではなく、上記のJREへのフルパスをここに指定してください)。
キーストアの場所
各keytoolコマンドには、-keystore
keytoolが管理するキーストアの永続キーストアファイルの名前と場所を指定するオプションがあります。キーストアは、デフォルトでは.keystore
、「user.home」システムプロパティによって決定されるように、ユーザーのホームディレクトリで指定されたファイルに保存されます。ユーザー名がuNameの場合、 "user.home"プロパティ値はデフォルトで
C:\Users\uName on Windows 7 systems
C:\Winnt\Profiles\uName on multi-user Windows NT systems
C:\Windows\Profiles\uName on multi-user Windows 95 systems
C:\Windows on single-user Windows 95 systems
したがって、ユーザー名が「cathy」の場合、「user.home」のデフォルトは
C:\Users\cathy on Windows 7 systems
C:\Winnt\Profiles\cathy on multi-user Windows NT systems
C:\Windows\Profiles\cathy on multi-user Windows 95 systems
http://docs.oracle.com/javase/1.5/docs/tooldocs/windows/keytool.html
~/.keystore
ファイルを探していました!私はオフのままにすると-keystore
、パラメータを、私はデフォルトのキーストアを見つけ出すことができなかったkeytool
ターゲット。cacerts
マシンの他の場所を探し続けました。keytoolが~/.keystore
ホームディレクトリに生成されることも、の.keystore
代わりに名前が付けられることも期待していませんでしたcacerts
。Java関係者が文書化する必要のある空白を埋めました。ありがとうございました!
Java 1.8を搭載したMac OS X 10.12:
$ JAVA_HOME / jre / lib / security
cd $JAVA_HOME
/ライブラリ/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
そこからです:
./jre/lib/security
そこにcacertsキーストアがあります。
これをVMオプションとして指定するには:
-Djavax.net.ssl.trustStore=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit
これが正しい方法だとは言っていませんが(JavaがJAVA_HOME内を見ることを知らないのはなぜですか?)、これを機能させるために私がしなければならなかったのはこのためです。
「ホーム」ディレクトリにあります。
Windows 7の場合:
C:\Users\<YOUR_ACCOUNT>\.keystore
Linux(Ubuntu)の場合:
/home/<YOUR_ACCOUNT>/.keystore
user.home
に等しい$HOMEDRIVE$HOMEPATH
のウィンドウで設定していない上$HOME
のcygwinによる設定HOMEDRIVE=C:
とHOMEPATH=\Users\[YOUR ACCOUNT]
これは私にとってはうまくいきます:
#!/ bin / bash CACERTS = $ (readlink - e $ (dirname $ (readlink - e $ (which keytool )))/../ lib / security / cacerts ) if keytool - list - keystore $ CACERTS - storepass changeit > / dev / null ; その後 echo $ CACERTS それ以外の場合は、「cacertsファイルが見つかりません。」と エコーします。>&2 出口1 fi
Linuxのみ。私のSolarisにはreadlinkがありません。最後に、私はこのPerlスクリプトを使用しました:
#!/ usr / bin / env perl use strict ; 警告を使用します。Cwd qw (realpath )を使用します。 $ _ = realpath ((grep { -x && - f } map { "$ _ / keytool" } split (':' 、$ ENV { PATH }))[ 0 ]); 死ぬ「keytoolを見つけることができません」しない限り、定義されました$ _ ; 私の$ keytool = $ _ ; 印刷する "'$ keytool'を使用しています。\ n" ; s / keytool $ / /; $ _ = realpath($ _。 '../ lib / security / cacerts '); -f $ _でない限り、「cacertsが見つかりません」と表示されます。 私の$ cacerts = $ _; 「「$ cacerts 」にインポートしています。\ n」を印刷します。 `$ keytool -list -keystore" $ cacerts "-storepass changeit`; $でない限り、「キーコンテナーを読み取れません」と死にますか?== 0; 終了$ ARGV [0] EQ場合は、 ' - D '; foreach(@ARGV){ 私の$ cert = $ _; s /\.[^.]+$//; 私の$ alias = $ _; 「「$ cert 」を「$ alias 」としてインポートしています。\ n」; `keytool -importcert -file" $ cert "-alias" $ alias "-keystore" $ cacerts "-storepass changeit`; 「証明書をインポートできません:$?」$?でない限り == 0; }
DimtryBが述べたように、デフォルトでは、キーストアはユーザーディレクトリの下にあります。ただしcacerts
、JVMがキーを選択できるようにファイルを更新しようとしている場合は、でファイルを更新する必要がありcacerts
ますjre/lib/security
。コマンドkeytool -list -keystore cacerts
を実行して証明書が追加されているかどうかを確認して、キーを表示することもできます。
lib/security
相対名のみが指定されている場合、keytoolコマンドが正しいパスを自動的に追加することを知って嬉しいです。
-importcert
。listコマンドはシステム全体の証明書を表示しますが、importコマンドは現在のディレクトリに新しいファイルを生成します。
updatedb; locate cacerts
cacertsファイルのインストール場所を見つけるのに役立ちます。
Debianでは、openjdkバージョン「1.8.0_212」を使用して、ここにcacertsを見つけました。
/etc/ssl/certs/java/cacerts
このパスを出力する標準のコマンドがあれば、きっと便利でしょう。
公式のOpenJDK 12 Dockerイメージを使用している場合、Javaキーストアの場所は次のとおりです。
/usr/java/openjdk-12/lib/security/cacerts
keytool -import -file example.crt -alias exampleCA -keystore truststore.jks
を見ている場合は、パラメーターも使用します-keystore
...非常に不明確なIMHO。そして最後に重要なことですが、私はその正確な問題について探していました-そしてそのような疑問を見つけました。たぶん他の人が同じことを経験します。