JVM にパブリック SSL 証明書をインポートする方法
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
このページの内容はサポート対象外のプラットフォームに関連しています。したがって、アトラシアン サポートではこのページの記載内容のサポートの提供は保証されません。この資料は情報提供のみを目的として提供されています。内容はお客様自身の責任でご利用ください。
問題
HTTPS 経由で 2 つのサーバーを接続する場合、各サーバーのパブリック SSL 証明書がもう片方のサーバーの JVM のトラストストアに追加されている必要があります。
- 「SSL サービスへの接続」を参照
ソリューション
JVM にパブリック SSL 証明書をインポートするには、2 つの方法があります。
コマンド ラインを使用したインストール
証明書を取得します。google.com を、アプリケーションが接続しようとしているサーバーの FQDN に置き換えてください。
証明書をインポートします。
Java 8:
<JAVA_HOME>/bin/keytool -importcert -alias <server_name> -keystore <JAVA_HOME>/jre/lib/security/cacerts -file public.crt
Java 11:<JAVA_HOME>/bin/keytool -importcert -alias <server_name> -keystore <JAVA_HOME>/lib/security/cacerts -file public.crt
必要に応じてパスワードを入力します (既定は
changeit
)。注意: cacerts ファイルに同じサーバー名に対する証明書がすでにある場合、インポートは次のエラーで失敗することがあります。
keytool error: java.lang.Exception: Certificate not imported, alias already exist
このような場合は、新しい証明書をインポートし直す前に、まず既存の証明書を cacerts から削除する必要があります。
既存の証明書を削除するには、以下のコマンドを使用します。
Java 8:<JAVA_HOME>/bin/keytool -delete -alias <server_name> -keystore <JAVA_HOME>/jre/lib/security/cacerts
Java 11:<JAVA_HOME>/bin/keytool -delete -alias <server_name> -keystore <JAVA_HOME>/lib/security/cacerts
- アプリケーションを再起動します。
- ホストに接続できることをテストします。
トラストストアの代替ロケーション
Java は通常、システム全体のトラストストアを使用します。
- Java 8:
$JAVA_HOME/jre/lib/security/cacerts
- Java 11:
$JAVA_HOME/lib/security/cacerts
ただし、パラメータ「-Djavax.net.ssl.trustStore=/path/to/truststore
」を指定することで別のトラストストアを使用することは可能です。/path/to/truststore
は代替トラストストアの絶対ファイルパスです。Jira のスタートアップ変数を構成する方法については、こちらをご確認ください。
しかしながら、この設定は推奨されていません。これは、Java がカスタム キーストア (自己署名証明書を含む) を使用するように指定された場合、$JAVA_HOME/jre/lib/security/cacerts
で見つかった署名認証局のルート証明書へのアクセスを持たず、CA が署名したほとんどの SSL サイトへのアクセスに失敗するためです。前述のように、新しい証明書 (自己署名証明書) をシステムレベルのキーストアに追加することをおすすめします。
デバッグ
次のような問題が発生する場合があります。
- 証明書が誤ったトラストストアにインストールされている。
- 接続しようとしている SSL サービスの証明書がキーストアに含まれていない。
Portecle の使用
アプリケーションを実行しているサーバーに Portecle アプリをダウンロードしてインストールします。
これはサードパーティ製のアプリケーションであり、アトラシアンのサポート対象外です。
<JAVA_HOME>
変数が、アプリケーションが使用している Java と同じバージョンを指していることを確認します。詳細な情報については「JAVA_HOME の設定」ドキュメントをご参照ください。Linux / Unix サーバー上で実行している場合は、サーバーへの接続時に次のように X11 を転送することで GUI を利用できます。
ssh -X user@server
- [Examine] メニューを選択し、[ Examine SSL/TLS Connection ] をクリックします。
- ターゲットとなるシステムの SSL ホストとポートを入力します。
- 読み込みが完了されるまで待ちます。完了したら、パブリック証明書を選択し、PEM をクリックします。
- 証明書をエクスポートし、保存します。
- メイン画面に戻り、[Open an existing keystore from disk] オプションを選択し、トラストストア ファイル (例:
$JAVA_HOME/lib/security/cacerts
) を選択して、パスワードを入力します (既定はchangeit
)。 - [Import a trusted certificate into the loaded keystore] ボタンを選択します。
- ステップ 6 で保存した証明書を選択し、適切なエイリアス (例: confluence) を付与して、信頼済みであることを確認します。
- 次のようなエラーが表示される可能性があります。
- これが発生した場合、[OK] をクリックして証明書を信頼済みとして許可します。
- 次のようなエラーが表示される可能性があります。
- キーストアをディスクに保存します。
- アプリケーションを再起動します。
- ホストに接続できることをテストします。