キーストアを生成します。
keytool -genkey -alias Tomcat -keyalg RSA -keystore my.keystore -keysize 2048
証明書署名要求(CSR)を生成します。
keytool -certreq -alias Tomcat -keyalg RSA -file my.csr -keystore my.keystore
その後、ホスティングプロバイダーにアクセスして、証明書を取得します。これらは次のようにインストールされます。
keytool -import -alias root -keystore my.keystore -trustcacerts -file Gd_bundle-g2-g1.crt
keytool -import -alias intermed -keystore my.keystore -trustcacerts -file gdig2.crt
keytool -import -alias Tomcat -keystore my.keystore -trustcacerts -file my.crt
最終証明書(my.crt)をインストールすると、次のエラーが表示されました。
keytool error: Java.lang.Exception: Failed to establish chain from reply
チェーンを正しい順序でインポートしたと思うので、このメッセージに非常に混乱しています。誰も私が間違っていることを見ることができますか?
私は、証明書で提供されたファイルgodaddyが両方とも中間証明書であることを発見しました(実際、両方とも同じ中間証明書のようです)。
証明書をダブルクリックして証明書のパスを見て、正しいルート証明書と中間証明書を取得しました...ここから、これらの各証明書をダウンロードして、質問で使用した手順を使用してインポートすることもできます
私はそれを回避する方法を見つけるまで約2週間同じ問題に苦しみました。問題は、Godaddyからの証明書に付属するルート証明書と中間証明書が必要な証明書ではないことでした。 Godaddyのリポジトリで、適切な証明書が見つからないことが何度もありました。
ラップトップで証明書を表示しました(Windows 8.1を使用)。そこで証明書チェーンを確認し、ルート証明書と中間証明書をエクスポートできました。次に、それらをキーストアにインポートしましたが、正常に機能しました。
これを行うには、次の指示に従ってください。
Windowsを実行しているコンピューターで証明書を表示します。次の画像のように見える3番目のタブに証明書チェーンが表示されます。
チェーンからルート証明書を選択し、[証明書の表示]ボタンをクリックします。
注:これらの証明書をインポートする前に、キーストアにあり、動作していなかった証明書を削除する必要がありました。そのために、次の手順を使用しました。
keytool -delete -alias [root] -keystore [keystore file]
キーツールの内容がわからない場合は、次を使用して表示できます。
keytool -list -keystore [keystore file]
Linux環境で、CA認定証明書をキーストアにインポートしようとすると、同じエラーが発生しました。
一連の手順に従って、正常にインポートしました。
CA認定証明書を受け取ったら、次の手順を使用して証明書をキーストアにインポートします。
次のコマンドを使用して、Java_HOME/jre/lib/securityフォルダーで使用できるcacertsにルート証明書をインポートします。
keytool -importcert -alias root -file [root certificate] -keystore cacerts
上記のコマンドを入力すると、パスワードの入力を求められ、パスワードを入力して、[はい]をクリックします。
次のコマンドを使用してルート証明書をインポートします。
keytool -importcert -alias root -file [root certificate] -keystore [keystore file name]
上記のコマンドを入力すると、パスワードの入力を求められ、パスワードを入力して、[はい]をクリックします。
次のコマンドを使用して中間証明書をインポートします。
keytool -importcert -alias intermediate -file [intermediate certificate] -keystore [key store file name]
上記のコマンドを入力すると、すでに証明書を置き換えるように求められ、yesと入力します。
注:中間証明書はオプションであり、無視できます。ルート証明書に付属しています。
次のコマンドを使用してサイト証明書をインポートします。
keytool -trustcacerts -importcert -alias [alias name which give during keystore creation] -file [site certificate] -keystore [key store file name]
このコマンドを実行する環境はJavaバージョン7です。証明書はGODADDYによって発行されます。
詳細については、次のサイトを参照してください。 http://docs.Oracle.com/javase/7/docs/technotes/tools/windows/keytool.html#importCertCmd
この問題を解決するには、keytoolコマンドで追加のスイッチ(-trustcacerts)を使用します。
Intermediate.cerファイルからcertificate.ksキーストアファイルに中間証明書をインポートするコマンドは次のようになります。
keytool -storetype JCEKS -storepass passwd -keystore certificate.ks -import -alias Intermediate -trustcacerts -file Intermediate.cer
Http.cerファイルからcertificate.ksキーストアファイルに証明書をインポートするコマンドは次のようになります。
keytool -storetype JCEKS -storepass passwd -keystore certificate.ks -import -alias http -trustcacerts -file http.cer
署名されたSSL証明書の作成とインポートのプロセスを完了してください。
証明書チェーンをダウンロードし、Windowsで開きます。CA証明書とCAからの証明書の回答を保存します。
最初にCA証明書をキーストアにインポートしてから、CAから回答をインポートします。
次の手順は、証明書をローカルキーストアにインポートする前に非常に重要です。 CAから署名済み証明書を受け取った後)。
次のコマンドを使用して、Java_HOME/jre/lib/securityフォルダーで使用できるcacertsにルート証明書をインポートします。
keytool -importcert -alias root -file [root certificate] -keystore cacerts上記のコマンドを入力すると、パスワードの入力を求められ、パスワードを入力して、[はい]をクリックします。