SSL およびアプリケーション リンクのトラブルシューティング ガイド
このページではまず、アプリケーション リンクで自動的に診断できる特定の SSL エラーと、それらを修正するために行える操作について説明します。
後半では、アプリケーション リンクと HTTPS を使用したときに発生する可能性があるエラーの特定および修正に役立つ、一般的なトラブルシューティング ガイドを提供しています。
このページの内容
アプリケーション リンクでよくある SSL エラー
リモート証明書が信頼できない
アプリケーションが HTTPS 経由でリモート アプリケーションに接続しようとしましたが、リモート SSL 証明書を信頼できません。
リモート アプリケーションで、自己署名の SSL 証明書や、ローカル アプリケーションで未知の認証局によって発行された証明書を使用している可能性があります。
アトラシアン アプリケーションのログに次のようなエラー メッセージが表示される場合があります。
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
考えられる要因 | 実行可能な対応策 |
---|---|
リモート SSL 証明書の失効 |
|
リモート証明書が信頼済みの認証局から発行されていない (自己署名証明書である可能性がある) |
|
リモート証明書がファイル システムの別の場所に保管されている |
|
リモート証明書がリモート ホスト名と一致しない
アプリケーションが HTTPS 経由でリモート アプリケーションに接続しようとしましたが、リモート SSL 証明書を信頼できません。
証明書のコモン ネームがリモート アプリケーションの URL に一致せず、証明書の詳細が検証できないため、リモート SSL 証明書を信頼できません。証明書の URL は、アプリケーション リンクの構成に使用された URL にも一致している必要があります。
アトラシアン アプリケーションのログに次のようなエラー メッセージが表示される場合があります。
javax.net.ssl.SSLException: hostname in certificate didn't match
javax.net.ssl.SSLException: <message>
考えられる要因 | 実行可能な対応策 |
---|---|
リモート証明書のコモン ネームがホスト アドレスの URL に一致しない |
|
ログのエラー メッセージ
アプリケーション ログに次のエラー メッセージが表示される場合があります。
javax.net.ssl.SSLException: hostname in certificate didn't match
javax.net.ssl.SSLHandshakeException
sun.security.validator.ValidatorException: PKIX path building failed
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
詳細な情報については上述のリンクをご利用ください。
アプリケーション ログの場所
アプリケーション リンクの SSL エラーのトラブルシューティング
このセクションでは、HTTPS (HTTPS over SSL) をアプリケーション リンクと使用した場合に発生する一般的なエラーの特定および修正に役立つ、トラブルシューティング ガイドを提供します。
直近のアップグレードの確認
server.xml
ファイルへのカスタマイズが上書きされた可能性があります。カスタム変更にはリバース プロキシ構成や HTTPS 構成が含まれる場合があります。アップグレード後の server.xml
ファイルがアップグレード前の server.xml
に一致するかどうかを確認します。server.xml
ファイルの場所は、ご利用のアプリケーション、オペレーティング システム、およびインストール先に応じて異なります。
アトラシアン アプリケーションで共通の既定のインストール先は、次のとおりです。
- Linux:
/opt/atlassian/<application-name>
- Windows:
C:\Program Files\Atlassian\<application-name>
- Windows:
C:\Atlassian\<application-name>
アトラシアン アプリケーションのフォルダ構造内の場所:
アプリケーション | server.xml の場所 |
---|---|
Bamboo | <install-path>/conf/ |
Confluence | <install-path>/conf/ |
Crowd | <install-path>/apache-tomcat/conf/ |
Crucible | Fisheye と同様 |
Fisheye | Fisheye の設定ファイルは config.xml です。「Fisheye の web サーバーを設定する」および「Fisheye / Crucible で追加ポートでの web リクエストのリッスンを有効化する方法」をご参照ください。 |
Jira アプリケーション | <install-path>/conf/ |
Bitbucket Server 5.0 | なし。 |
Bitbucket Server 4.0 〜 4.14 | <Bitbucket home directory> /shared/server.xml |
Stash 3.8 〜 3.11 |
このリリースを利用しているが、上述のディレクトリに インスタンスのアップグレード時の考慮事項をへらすため、 |
Stash 3.7 and earlier | <install-path>/conf/ |
<install-path>
は、システムでのアプリケーションのインストール先です。
ネットワーク トポロジーの確認
アプリケーション間のセキュアな接続を構成するには、2 つの一般的な方法があります。これらのアプローチは、SSL 証明書の保存先と、アプリケーション リンクのセットアップ時に使用されるアプリケーション URL を決定します。
SSL をリバース プロキシで終了する
クライアントは SSL 経由でリバース プロキシに接続します。リバース プロキシは非セキュアな接続を経由してアプリケーション サーバーと通信します。
SSL をアプリケーション サーバーで終了する
リバース プロキシを使用しないインストールの場合、Tomcat を構成して SSL 接続を許可するようにできます。アプリケーション サーバーでの SSL の終了をリバース プロキシと組み合わせて使用し、リバース プロキシとアプリケーション サーバー間の通信をセキュアに保つこともできます。
HTTPS を使用するようにアトラシアン アプリケーションを構成する
適切なベース URL を使用しているかどうかの確認
アプリケーションに適切なベース URL が定義されていること (http or
https
プロトコルを含む) と、アプリケーション リンクで同じ URL を使用していることを確認します。
SSL 証明書の構成の確認
SSL 証明書は、次の最小要件を満たす必要があります。
- 証明書のコモン ネーム (CN) は、アプリケーションのホスト名 (URL アドレス) と一致している必要があります。
- 証明書のタイムスタンプは引き続き有効である必要があります。
- 証明書が適切な Java トラスト ストアにインストールされている必要があります (アトラシアンのサーバー製品は Tomcat アプリケーション サーバーをバンドルする Java アプリケーションです)。
- ローカルのトラスト ストアに、接続先のリモート アプリケーションの証明書が保存されている必要があります。
- トラスト ストアに中間証明書が存在する必要があります。
- ローカルおよびリモート証明書は、適切な形式 (JKS) で既定のトラスト ストア タイプにインポートされている必要があります。
証明書の詳細を確認するには、ブラウザでアプリケーションにアクセスし、ブラウザのアドレスバーにある南京錠のアイコンをクリックします。また、SSL 証明書の詳細をオンラインで確認することもできます (例: https://www.digicert.com/help/ を使用)。
Java トラスト ストアに証明書が存在するかどうかを確認するには、以降の「SSL 証明書の場所の確認」をご参照ください。
SSL 証明書の場所の確認
アトラシアンのサーバー製品などの Java アプリケーションは、ファイルシステムの特定の場所で SSL 証明書を見つけることを期待します。
既定では、Java アプリケーションは次の場所にある JRE cacerts
トラスト ストアを使用します。
JAVA_HOME/jre/lib/security/cacerts
ここで、JAVA_HOME
は Java のインストール ディレクトリを指す環境変数です。特定のアトラシアン製品は JRE をバンドルします。この場合、JRE のトラスト ストアが使用されます。
アプリケーションの起動時に JVM 引数を指定することで別のストアを指定できます。詳細については Oracle のドキュメントをご参照ください。
一般に、リモート アプリケーションから証明書をエクスポートし、それをローカル アプリケーションにインポートする必要があります。これは、アプリケーションが別のマシンで実行されている場合や、バンドルされた JVM を使用している場合に一般的な方法です。
キーストアから証明書をエクスポートする
トラスト ストアに証明書をインポートする
keytool
ユーティリティが見つからない場合
keytool
は Java Runtime Environment (JRE) とともに提供されます。バンドルされた JRE を持つ製品を使用している場合、keytool を <product-install-path>/jre/bin/keytool
で見つけることができます。