SSL を利用して Jira と Apache を統合する方法
アトラシアン アプリケーションの製品内でリバース プロキシを使用できますが、アトラシアン サポートはその設定についての支援は行いません。つまり、アトラシアンではリバース プロキシに関するあらゆるサポートの提供が保証されません。
設定でサポートが必要な場合、アトラシアン コミュニティに質問を登録してください。
Apache Tomcat の “Ghostcat” 脆弱性について
このガイドに従うと、ご利用の Jira インスタンスが Apache Tomcat で最近見つかったリスクの高い脆弱性にさらされる可能性があります。
これは、複数の SSL 証明書および/あるいは Webアプリケーションを抱えたネットワーク等、全て一つのロケーション(Apache) 内で管理する場合の一般的な設定です。
さらに複雑なソリューションが要求された場合は、「Apache HTTP サーバーのバージョンドキュメント」をご参照または、勤務先のApache SME にご相談下さい。必要な場合は、「アトラシアン回答コーナー」へご質問、または「アトラシアンエキスパート」にご相談下さい。
はじめる前に
It is expected that the SSL certificate has been signed by a CA and is in the PEM format prior to configuring Apache. For assistance preparing and generating SSL certificates, please consult with a SSL Vendor (for example, GoDaddy, Verisign, RapidSSL).
ドメイン、サブドメインあるいはコンテキストパスを利用するかの決定は、主として提供される SSL 証明書の種類、およびウェブサイト設定にまつわるあらゆる業務規定によって左右されます。SSL がエラー無く機能するには、ドメインが証明書の Common Name (CN) と一致しなくてはいけません。
アスタリスク(*) を有する CN を持つ証明書は ワイルドカード証明書 であり、そのドメインのあらゆるサブドメインをサポートできます。どの URL を使用するべきか分からない場合は、その証明書を提供した担当のシステムアドミニストレーターと SSL ベンダーに問い合わせて下さい。
ステップ 1: Tomcat を設定する
- Jira を停止します。
(オプション: Jira にコンテキスト パスが不要な場合、このステップを飛ばします)
Tomcat の
server.xml
を編集して必要な Jira コンテキスト パスを追加します。以下の例では、path="jira"
を使用しています。これは、既定の Jira ポートが使用されている場合、Jira にhttp://jiraserver:8080/jira
でアクセスできることを意味します。<Engine defaultHost="localhost" name="Catalina"> <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Context docBase="${catalina.home}/atlassian-jira" path="/jira" reloadable="false" useHttpOnly="true"> <!-- ==================================================================================== Note, you no longer configure your database driver or connection parameters here. These are configured through the UI during application setup. ==================================================================================== --> <Resource auth="Container" factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60" name="UserTransaction" type="javax.transaction.UserTransaction"/> <Manager pathname=""/> </Context> </Host>
Ensure the
path
value is set with a prepending forward slash (/
) . For example,path="/jira"
rather thanpath="jira"
.Tomcat の
server.xml
ファイルを編集して、リクエストをプロキシするための別のコネクタを含めます。これにはscheme
属性、proxyName
属性、およびproxyPort
属性が必要です。以下の例のように、これらをプロキシの適切なドメインおよびポートで置き替えます。<Service name="Catalina"> <!-- Apache Proxy Connector with values for scheme, proxyName and proxyPort --> <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8080" protocol="HTTP/1.1" relaxedQueryChars="[]|{}^c;`"<>" redirectPort="8443" useBodyEncodingForURI="true" scheme="https" proxyName="jira.atlassian.com" proxyPort="443"/> <!-- Standard HTTP Connector --> <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8081" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
- Tomcat から HTTPS へのリダイレクトが有効になっている場合、すべて無効にします。例えば、「SSL または HTTPS を通じて Jira を実行する」における
WEB-INF/web.xml
への変更は、Apache を使用する際にエラーを発生させます。 - Jira を起動します。
- 必要に応じてコンテキスト パスを使用して、Jira に通常のコネクタ上でアクセス可能かどうかをテストします。例:
http://jiraserver:8081/jira
。 - 適切なプロキシ コネクタ上で Jira にアクセスして、新しいコネクタの有効性をテストします。コネクタの動作は、コンテキスト パスによって異なります。
- コンテキスト パスが空またはルート (
/
) の場合、プロキシ コネクタ (例:http://jiraserver:8080/
) 経由で Jira にアクセスすると画面に警告が表示されます。 - コンテキスト パスが空もしくはルート (
/
) 以外の場合 (例:/jira
)、プロキシ コネクタ (例:http://jiraserver:8080/jira
) 経由で Jira にアクセスすると、設定されたプロキシ (例:https://jira.atlassian.com/jira
) にリダイレクトされます。
- コンテキスト パスが空またはルート (
2 つの異なる Tomcat コネクタを利用して、Jira でのテストを可能にしました。必要に応じたプロキシのバイパスは、トラブルシューティングの際に便利です。標準コネクタは、ネットワーク外からの外部アクセスが認められない (ファイアウォールはポートへの転送を行わない) 事を想定しています。
ステップ 2: Apache HTTP サーバを設定する
Apache のインストールおよび DNS の構成に関しては、本ドキュメントでは扱っていません。また、Apache 2.2 がインストール済みであり、DNS エントリが Jira ドメイン向けに設定されているものと想定しています。Apache の設定は利用する OS によって異なるため、現在、一部のディストリビューションやそこでの設定のみドキュメントが用意されています。
2.1 プロキシモジュールを有効化する
Debian/Ubuntu
Windows/その他の OS
2.2 これらのモジュールを使用するように、Apacheを設定します
Debian/Ubuntu
Windows/その他の OS
2.3 HTTP を HTTPS にリダイレクトします
これは、以下のいずれかの方法で行えます:
- HTTP
VirtualHost
を、同じ Tomcat コネクタに転送するようにセットアップします。Tomcat はscheme
、proxyName
、proxyPort
パラメータを利用して HTTPS にリダイレクトします。これは、アトラシアンの「Jira を Apache に統合する」ドキュメントに従って行えます。 mod_rewrite (このモジュールを有効にする必要がある場合があります) を利用して、以下を HTTP
VirtualHost
に追加します。RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ステップ 3: Jira を構成する
- 「Jira オプション設定」の通りに、「gzip ファイル圧縮を利用する」設定をオフにします。 GZIP ファイル圧縮は、特にプロキシによるトラフィック圧縮を行う等のリバースプロキシを使った場合に、性能問題を起こすことで知られています。
- Set the Base URL to be the FQDN that Jira will be accessed on, for example https://jira.atlassian.com. This is also located in Configuring Jira options.
Jira can only be configured to respond to a single URL and the Base URL (as in Configuring Jira options) must match the URL end-users are accessing. Misconfiguration of this may cause significant problems within Jira such as the Activity Stream and Dashboard Gadgets failing to function correctly. - Test by accessing Jira on the FQDN (e.g.: https://jira.atlassian.com), ensuring that Jira is accessible and all dashboard gadgets correctly display.
トラブルシューティング
- Hijacked Sessions: Some users have reported problems with user sessions being hijacked when the mod_cache module is enabled. If these problems are encountered, try disabling the
mod_cache
module.
This module is enabled by default in some Apache HTTP Server version 2 distributions. - SELinux を使用する Linux ディストリビューションで
mod_proxy
(およびmod_jk
) を有効化した際の Permission Denied エラー :mod_proxy
(およびmod_jk
) を動作させようとすると "permission denied" エラーが発生することが多くのユーザーから報告されています。これは SELinux (/etc/selinux/config
) を無効化することで解決できます。 Running Mac OS X: Disable webperfcache, which proxies port 80 by default. A user reported this as the likely cause of Jira session problems, in the form of users' identities becoming mixed up, as below.
Additionally we do not recommend using Max OS X as it is not supported, as in our Supported platforms.
OSX Server では、バーチャルホスト機能を提供するためにデフォルトで webperfcache を有効にしており、動的インスタンス (JIRA のインスタンスはすべて動的インスタンスです。) に対しては悪影響があり、多くの問題を引き起こします。
中でも最近指摘されている JIRA セッションへの悪影響の問題には注意する必要があります。なお、次の情報も参照してください :
http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/webperfcache.8.html
残念ながら、あるインスタンスで webperfcache を無効化しても、有効になっているインスタンスがひとつでもあると、すべてのインスタンスが引き続き webperfcache をプロキシとして使用するため、セッションに問題が発生します。
- 過剰なリダイレクト : Tomcat と Apache のどちらかでリダイレクトが行われれば十分である場合において両方でリダイレクトが行われてしまう問題です。これに対しては、Tomcat でのリダイレクトを無効化し、(Running Jira over SSL or HTTPS の説明に従って設定の変更を元に戻します。) その後リダイレクトが Apache のみで行われることを確認します。
- その他の一般的なトラブル :
- ブラウザーのキャッシュを削除してからもう一度試みます。
- Ensure that Jira works as expected when running directly from Tomcat and bypassing Apache. For example, accessing
http://jiraserver:8080
instead of http://jira.atlassian.com. - より多くの Apache デバッグ情報を得られるようにログレベルを変更して再起動します。
- Jira にアクセスし、エラーに対応する Apache ログファイル情報を確認します。
- アトラシアン Answers に質問を出して助言を求めます。
- 403 Forbidden エラー :
Apache 設定ページに
RequestHeader unset Authorization
行を追加して、認証ヘッダーを無効化します。<Location /jira> RequestHeader unset Authorization ProxyPreserveHost On ProxyPass http://jiraserver/jira ProxyPassReverse http://jiraserver/jira </Location>
参考情報
- Jira と Apache の統合
- AJP プロトコルを利用して Apache リバースプロキシを構成する
- より高度な
mod_webapp
設定 (例: SSL) については、この mod_proxy ガイドを参照してください。 - Apache 仮想ホストドキュメント