SSL または HTTPS 上での Jira アプリケーションの実行
You can use SSL with Atlassian applications; however, SSL configuration is outside the scope of Atlassian Support.
- 証明書の変換に際してサポートが必要であれば、証明書の提供元のベンダーに相談してください。
- If you need help with configuring SSL, create a question on the Atlassian Community.
このページでは、Apache Tomcat で HTTPS 設定を行い、Jira アプリケーションを SSL または HTTPS 上で実行する手順を説明します。この手順は Jira が通常の方法でインストールされている場合を前提としています。HTTPS 設定の完全な手順や包括的な手順の説明ではありません。また、記述内容はすべての環境に適用されるものではありません。
なぜ、Jira を SSL または HTTPS 上で実行する必要があるのでしょうか? ユーザーが Web アプリケーションにアクセスする場合、コンピューターと ISP / 会社 との間でユーザー名やパスワードの傍受が行われる可能性が常にあります。HTTPS 経由のアクセス (HTTP over SSL) を有効化し、特にパスワードを送信するページにおいてはこれを必須とすることが推奨されます。ただし、HTTPS の利用でパフォーマンスの低下を招く場合があることには留意する必要があります。
HTTPS を使用せずに Jira を実行すると、インスタンスが中間者攻撃やDNS リバインディング攻撃などに晒される可能性があります。インスタンスでは HTTPS を有効化することをお勧めします。
はじめる前に
作業を始める前に、以下の点を確認してください :
- サポート
アトラシアン サポートでは、SSL のサポートは証明書を発行する認証局 (CA) に依頼します。このページにおける SSL 関連の説明は参考情報としてのみ提供されます。 - Windows インストーラー
"Windows インストーラー" は、Tomcat を実行するために独自の Java Runtime Environment (JRE) Java プラットフォームをインストールします。SSL 証明書をアップデートする場合は、JRE のインストレール中に行う必要があります。 関連バグ
Jira 7.3 以降は、server.xml
ファイルのプロトコルを誤って設定する 2 つのバグの影響の影響を受けます。プロトコルを手動で設定することでこの課題を回避できます。- Jira がリバース プロキシの背後にある場合
Jira が Apache などのリバース プロキシの背後にホストされている場合は、「SSL を利用して Jira と Apache を連携する」をご覧ください。 - 新しい接続の追加
新しい接続 (SSL など) を追加する際は、Jira 接続ツールは接続の詳細を含むエントリを server.xml ファイルに保存します。このエントリには特殊文字を処理するプロパティを含まないので、手動で追加する必要があります。このプロパティがなければ Jira は適切に機能しないため、これは必須の操作です。以降で必要な手順を説明しますが、詳細についてはこちらを参照してください。 - 安全でないBKS-V 1 キーストア形式
BKS-V 1 キーストア形式 (BouncyCastle ライブラリで提供) のセキュリティ脆弱性によって、ご利用の Jira インスタンスでは使用しないことをお勧めします。詳細
Java キーストアの生成
このセクションでは、お客様の SSL 証明書を保存する Java キーストア (JKS) を作成します。SSL 証明書は、Jira において SSL 通信を行うためには必須のものです。SSL 証明書は一般的に 2 つの種類に区分されます :
証明書 | 説明 | 使用環境 | 手順 |
---|---|---|---|
自己署名証明書 | ウェブサーバー証明書の正当性を確認する方法のひとつである CA によるデジタル署名がない証明書です。自分自身が自己名で署名します。 | テスト用、開発用、その他内部向けサーバーのみです。 | 1 - 13 |
CA 署名証明書 | 認証局 (CA) のデジタル署名によって正当性が確認された証明書です。これにより、ブラウザやクライアントは証明書に信用を置くことが可能になります。 | 本番環境用サーバー | 1 - 19 |
信用のおけるサードパーティー認証局 (CA) が発行したデジタル証明書により、お客様のウェブサイトがお客様の会社を正当に代表するものであることが証明され、お客様の会社の実在が認証されます。多くの CA では単にドメイン名のみを認証する証明書を発行しますが、VeriSign などでは、お客様の事業活動の存在、ドメイン名の所有権の存在、証明書使用に関するお客様の権限などを証明する高度の認証を提供しています。
CA の一覧は、ここ をご覧ください。よく知られた認証局の例を次に示します:
当社としては、CA で署名された証明書の利用を推奨いたします。
お客様のサーバーに Portecle をインストールすることができない場合や、コマンドラインの利用をご希望の場合は、このページ下部にある コマンドラインを使用したインストール セクションをご覧ください。
- Portecle アプリをダウンロードし、Jira を起動させるサーバーにインストールします。
このアプリケーションはサードパーティー製であり、アトラシアンではサポート対象外です。 適切な権限を持って実行できるよう、アプリを管理者として実行します。
<JAVA_HOME>
変数が Jira で使う Java と同じバージョンを示していることを確認します。詳細情報は、「JAVA_HOME の設定」をご覧ください。
Linux / Unix サーバー上で実行している場合は、サーバーへの接続時に次のように X11 を転送することで GUI を利用できます。ssh -X user@server
- Create a new Keystore オプションを選択します。
- JKS形式を選択して OK をクリックします。
- キーペアの生成ボタンを選択します。
- Key Algorithm では RSA を、Key Size では 2048 を選択します :
- [Signature Algorithm] が「SHA256withRSA」となっていることを確認します。「既定の SSL 暗号化が弱すぎることについてのセキュリティ ツールからの報告」をご参照ください。
- 以下の例のように証明書の詳細情報を編集し、[OK] を選択します。
[Common Name] はサーバーの URL と一致している必要があり、一致していない場合はブラウザにエラーが表示されます。 - 証明書のエイリアス名を指定します。ここでは、jira を使用しています。
- キーストアのパスワードを入力します (既定のパスワードは通常
changeit
です)。 - 下の例のように、キーペアの生成が成功した旨のメッセージが表示されます :
パスワードがステップ 11 と同一であることを確認し、キーストアを
<Jira_HOME>/jira.jks
に保存します。[ファイル] > [キーストアの保存] を選択して保存できます。自己署名証明書を使用する場合は、 Jira 設定ツールを利用した web サーバーの設定 に進んでください。それ以外の場合は次の手順に進みます。
- 証明書の正当性を確認するために CA に対して署名を依頼する証明書署名要求 (CSR) を生成する必要があります。これを行うためには、証明書上で右クリックし、CSR の生成 を選択します。CSR ファイルを、<JIRA_HOME>/jira.csr.として保存します。
- CSR を認証局に送信して署名を求めます。認証局からは、署名済み証明書 (CA 応答) および CA のルート証明書/中間証明書のセットが返送されます。
- Import Trusted Certificate ボタンを使用して、ルート証明書と中間証明書の両方(もしくは一方)をインポートし、証明書ごとにこの手順を繰り返します。
jira
証明書で右クリックして [Import CA Reply (CA 応答をインポート)] を選択し、署名付き証明書のインポートを開始します。- CA から提供された証明書 (
jira.crt
) を選択します。これで、CA 応答のインポートが完了しました。 - 結果を、Tools > Keystore Report で確認します。証明書はルート証明書の子ノードに表示されます。
- キーストアを保存し、次のセクションに進みます :
Jira 設定ツールを利用した web サーバーの設定
このセクションでは、JIRA での SSL 暗号化設定の最後の手順として、Jira 設定ツールを利用した web サーバーの設定を行います。Jira 設定ツールの詳細は、Jira 構成ツールの利用 をご覧ください。
- 次のように Jira 設定ツールを起動します :
- Windows: コマンド プロンプトを開いて、Jira インストール ディレクトリの
bin
サブディレクトリにあるconfig.bat
を実行します。 - Linux/Unit: コンソールを開いて、Jira インストール ディレクトリの
bin
サブディレクトリにあるconfig.sh
を実行します。
KB 記事「Unable to Start Jira applications Config Tool due to No X11 DISPLAY variable was set error に記載のエラーで失敗する場合があります。この場合、ページに記載されている回避策をご参照ください。
- Windows: コマンド プロンプトを開いて、Jira インストール ディレクトリの
- [Web サーバー] タブをクリックします。
スクリーンショット: Jira 設定ツール — [Web サーバー] タブ
各フィールドに次のように入力します :
フィールド 値 ポートの制御 通常はデフォルトのままとしますが、必要に応じてポート番号を変更することもできます。「Jira の TCP ポートの変更」をご覧ください。 プロフィール Profile とはプリセットされたウェブサーバー動作設定です。次の 4 つの値から選択します : - 無効
- HTTP のみ
- HTTP および HTTPS (HTTP を HTTPS へリダイレクト)
- HTTPS のみ
Jira を HTTPS 上で実行する場合は、'HTTP & HTTPS' または 'HTTPS' を選択する必要があります。
Jira を HTTPS 上で実行するが、ユーザーに HTTP 経由でも Jira にアクセスさせる場合は、'HTTP & HTTPS' を選択する必要があります。'HTTP & HTTPS' を選択すると、HTTP 経由で Jira にアクセスするユーザーは HTTPS のアドレスにリダイレクトされます。HTTP ポート 通常はデフォルトのままとします(8080)。必要に応じてポート番号を変更することもできます。「Jira の TCP ポートの変更」をご覧ください。
プロファイルとして "HTTPS のみ" を選択した場合、このフィールドは無効となります。HTTPS ポート 通常はデフォルトのままとします(8443)。必要に応じてポート番号を変更することもできます。「Jira の TCP ポートの変更」をご覧ください。 Keystore パス 証明書のキーストアの場所を指定します。これは手順 13 でキーストアを保存した際に選択され、 <Jira_HOME>/jira.jks
となります。Keystore パスワード キーストアのパスワードを指定します。自己署名証明書を生成した場合は、このパスワードは手順 13 で証明書を生成したときにキーおよびキーストアに設定したパスワードです。 Keystore エイリアス キーストア内のそれぞれの項目はエイリアスで区別されます。手順 10 で説明したように、証明書について jira
を使用することを推奨します。- 無効
- Check Certificate in Key Store ボタンをクリックして、以下の項目を確認します :
- キーストア内に証明書が存在すること。
- キーストアのパスワードが有効であること。
- キーエイリアスを使用してキーを見つけられること。
- Save ボタンをクリックして設定を保存します。
- 重要: 新しい接続を追加する際、設定ツールには特殊文字を許可するプロパティが含まれません。そのため、それらを
server.xml
ファイルに手動で追加する必要があります。方法については、このナレッジベース記事を参照してください。
高度な設定
同一ホストにおける複数のインスタンスの実行
同一ホストで複数のインスタンスを実行する場合は、address 属性を <Jira_INSTALLATION>/conf/server.xml
ファイルで指定することが重要です。これは、コネクタは既定では利用可能なすべてのネットワーク インターフェイス上でリッスンしているので、アドレスを指定することで、同一の既定ポート上で実行されるコネクタ間の衝突を防止するためです。アドレス属性の設定の詳細については、Apache Tomcat ドキュメントの「HTTP Connector」をご確認ください。
コマンド ラインを使用したインストール
ステップ 1.キーストアを作成します
Java キーストアの生成:
<JAVA_HOME>/keytool -genkey -alias jira -keyalg RSA -keystore <Jira_HOME>/jira.jks
Instead of first and last name, enter the server URL, excluding "https://" (e.g.: jira.atlassian.com).
- パスワードを入力します。
手順 2 のパスワードを使用して、署名のための CSR を生成します :
<JAVA_HOME>/keytool -certreq -alias jira -file /output/directory/csr.txt -keystore <Jira_HOME>/jira.jks
CSR を署名のために CA に送信します。CA からは、署名済み証明書と CA のルート証明書や中間証明書が返送されます。
- 証明書に署名がない場合はステップ 7 に進んでください。
ルート証明書、または中間証明書をインポートします :
<JAVA_HOME>/keytool -import -alias rootCA -keystore <Jira_HOME>/jira.jks -trustcacerts -file root.crt
(CA から提供された) 署名済み証明書をインポートします :
<JAVA_HOME>/keytool -import -alias jira -keystore <Jira_HOME>/jira.jks -file jira.crt
Keystore 内に証明書が存在することを検証します。
<JAVA_HOME>/keytool -list -alias jira -keystore <Jira_HOME>/jira.jks
これは
PrivateKeyEntry
である必要があります。異なる場合、証明書のセットアップは正常に完了しません。例:jira, Jan 1, 1970, PrivateKeyEntry, Certificate fingerprint (MD5): 73:68:CF:90:A8:1D:90:5B:CE:2A:2F:29:21:C6:B8:25
ステップ 2.Keystore で Tomcat を更新する
- 編集する前に、
<Jira_INSTALL>/conf/server.xml
のバックアップを作成します。 HTTPS コネクタを編集し、キーストアを示すパラメーターを含めます。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxHttpHeaderSize="8192" SSLEnabled="true" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" sslEnabledProtocols="TLSv1.2,TLSv1.3" clientAuth="false" useBodyEncodingForURI="true" keyAlias="jira" keystoreFile="<Jira_HOME>/jira.jks" keystorePass="changeit" keystoreType="JKS"/>
<Jira_HOME>
に適切なパスを入力し、必要に応じてポートを変更します。組織が最新の TLS バージョンをサポートしていない場合は、以前のバージョンへフォールバックできます。次を変更します:
sslEnabledProtocols="TLSv1.2,TLSv1.3"
変更後:
sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"
HTTP コネクタを編集し、HTTPS コネクタへリダイレクトするようにします。
<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8080" protocol="HTTP/1.1" redirectPort="<PORT_FROM_STEP_1>" useBodyEncodingForURI="true"/>
<PORT_FROM_STEP_1>
が適切な値に変更されていることを確認します。この例では、8443 となります。- 変更を
server.xml
に保存します。 HTTPS へのリダイレクトを使用する場合 (推奨)、
Jira_INSTALL>/WEB-INF/web.xml
ファイルを編集し、ファイルの末尾に次のセクションを追加してから、</web-app>
を閉じます。この例では、添付ファイルを除くすべての URL が HTTP から HTTPS にリダイレクトされます。<security-constraint> <web-resource-collection> <web-resource-name>all-except-attachments</web-resource-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspa</url-pattern> <url-pattern>/browse/*</url-pattern> <url-pattern>/issues/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
- 変更を保存したら JIRA を再起動します。
また、Jira 構成ツールで「HTTP と HTTPS」プロファイルを選択し、HTTP URL から HTTPS URL へユーザーをリダイレクトすることもできます。この設定は、すべての HTTP URL を HTTPS URL へリダイレクトします。
特定のページのみを HTTPS へリダイレクトしたい場合、手動で行う必要があります。これを行うには、Jira 設定ツールで「HTTPS のみ」プロファイルを選択して設定を保存した後、HTTP URL を対応する HTTPS URL に手動でリダイレクトする、htaccess ファイルを Web サーバー上に作成します。
トラブルシューティング
上記にある通り Portecle を用いて生成した自己署名キーを使用する場合の、トラブルシューティングの TIPS をいくつか紹介します。
ブラウザに「https://localhost:<port number>」と入力したときに "Cannot establish a connection to the server at localhost:8443" のようなメッセージが表示される場合は、ログ ファイル logs/catalina.out
でエラー メッセージを探します。ここには発生する可能性があるいくつかのエラーとそれぞれの説明を紹介します。