SSL または HTTPS 上での JIRA アプリケーションの実行

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

アトラシアンのアプリケーションはSSLに対応しています。しかし、アトラシアンのサポートはその設定に対して支援は行いません。つまり、アトラシアンはSSLに関するあらゆるサポートの提供の保証はできません

  • SSL証明書の変更に際してサポートが必要であれば、証明書の提供元のベンダーに相談してください。
  • 設定に関してサポートが必要であれば、Atlassian Answers に質問をあげてください。

Be aware that SHA-1 is being phased out due to known weaknesses.

このページでは、Apache Tomcat で HTTPS に関する設定を行うことによって JIRA アプリケーションを SSL または HTTPS 上で実行する手順を説明します。 この手順は JIRA が通常の方法でインストールされている場合を前提としており、HTTPS 設定の完全なガイドでも包括的なガイドでもなく、またお客様が個別の設定を行っている場合は適用できないことがあります。

Why should you run JIRA over SSL or HTTPS? When web applications are being accessed across the internet, there is always the possibility of usernames and passwords being intercepted by intermediaries between your computer and the ISP/company. It is often a good idea to enable access via HTTPS (HTTP over SSL) and make this a requirement for pages where passwords are sent. Note, however, that using HTTPS may result in slower performance.

HTTPS を使用せずに Jira を実行すると、インスタンスが中間者攻撃やDNS リバインディング攻撃などに晒される可能性があります。インスタンスでは HTTPS を有効化することをお勧めします。

はじめる前に

作業を始める前に、以下の点を確認してください :

  • アトラシアンのサポートは、SSL のサポートについては証明書を発行する認証局 (CA) に委ねます。このページにおける SSL 関連の説明は参考情報としてのみ提供されます。
  • Windows インストーラーを使用して JIRA をインストールした場合 :
    • Windows インストーラー は、Tomcat を実行するために独自の Java Runtime Environment (JRE) Java プラットフォームをインストールします。SSL 証明書をアップデートする場合は、JRE のインストレーション中に行う必要があります。
    • In this document, the term <jira-install-dir> refers to the JIRA application installation directory itself.

JIRA が Apache のようなリバースプロキシの背後にホストされている場合は、 SSL を利用して JIRA と Apache を統合する方法 をご覧ください。

Java キーストアの生成

このセクションでは、お客様の SSL 証明書を保存する Java キーストア (JKS) を作成します。SSL 証明書は、JIRA において SSL 通信を行うためには必須のものです。SSL 証明書は一般的に 2 つの種類に区分されます :

証明書 説明 使用環境 該当手順番号
自己署名証明書

ウェブサーバー証明書の正当性を確認する方法のひとつである CA によるデジタル署名がない証明書です。自分自身が自己名で署名します。

テスト用、開発用、その他内部向けサーバーのみです。

1 〜 13
CA 署名証明書 認証局 (CA) のデジタル署名によって正当性が確認された証明書です。これにより、ブラウザやクライアントは証明書に信用を置くことが可能になります。 本番環境用サーバー 1 〜 21

信用のおけるサードパーティー認証局 (CA) が発行したデジタル証明書により、お客様のウェブサイトがお客様の会社を正当に代表するものであることが証明され、お客様の会社の実在が認証されます。多くの CA では単にドメイン名のみを認証する証明書を発行しますが、VeriSign などでは、お客様の事業活動の存在、ドメイン名の所有権の存在、証明書使用に関するお客様の権限などを証明する高度の認証を提供しています。

CA の一覧は、ここ をご覧ください。よく知られた認証局の例を次に示します:

当社としては、CA で署名された証明書の利用を推奨いたします。

お客様のサーバーに Portecle をインストールすることができない場合や、コマンドラインの利用をご希望の場合は、このページ下部にある コマンドラインを使用したインストール セクションをご覧ください。

  1. Portecle アプリをダウンロードし、JIRA を起動させるサーバーにインストールします。
    (warning)このアプリケーションはサードパーティー製であり、アトラシアンではサポート対象外です。
  2. Run the App as an Administrator, so it will have the appropriate permissions. Also, ensure the <JAVA_HOME> variable is pointing to the same version of Java that JIRA uses. See Setting JAVA_HOME for further information on this.
    (info) If running on a Linux/UNIX server, X11 will need to be forwarded when connecting to the server (so you can use the GUI), as below:

    ssh -X user@server
  3. Create a new Keystore オプションを選択します。
  4. JKS形式を選択して OK をクリックします。
  5. キーペアの生成ボタンを選択します。
  6. Key Algorithm では RSA を、Key Size では 2048 を選択します :
  7. Make sure the Signature Algorithm is "SHA1withRSA" and then edit the certificate details, as per the below example and select OK:

    (warning) The Common Name MUST match the server's URL, otherwise errors will be displayed in the browser.
    (info) If you would like to use SHA256withRSA, please use the appropriate Signature Algorithm, and refer to: Security tools report the default SSL Ciphers are too weak.
  8. 証明書のエイリアス名を指定します。ここでは、jira を使用しています。
  9. Enter a password for the KeyStore (the default password used is typically changeit).
  10. 下の例のように、キーペアの生成が成功した旨のメッセージが表示されます :
  11. Save the KeyStore in <JIRA_HOME>/jira.jks. This can be done by File > Save Keystore. Make sure you use the same password from step 9.

    自己署名証明書を使用する場合は、 JIRA 設定ツールを利用した web サーバーの設定 に進んでください。それ以外の場合は次の手順に進みます。

  12. We need to generate a Certificate Signing Request for the CA to sign and confirm the identity of the certificate. To do so, right click on the certificate and choose Generate CSR. Save it in <JIRA_HOME>/jira.csr.
  13. CSR を認証局に送信して署名を求めます。認証局からは、署名済み証明書 (CA 応答) および CA のルート証明書/中間証明書のセットが返送されます。
  14. Import Trusted Certificate ボタンを使用して、ルート証明書と中間証明書の両方(もしくは一方)をインポートし、証明書ごとにこの手順を繰り返します。
  15. Import the signed certificate by right clicking on the jira certificate and selecting Import CA Reply:
  16. Select the certificate provided by the CA, which should be jira.crt. This will respond with CA Reply Import successful.
  17. 結果を、Tools > Keystore Report で確認します。証明書はルート証明書の子ノードに表示されます。
  18. キーストアを保存し、次のセクションに進みます :

JIRA 設定ツールを利用した web サーバーの設定

このセクションでは、JIRA での SSL 暗号化設定の最後の手順として、JIRA 設定ツールを利用した web サーバーの設定を行います。JIRA 設定ツールの詳細は、JIRA 構成ツールの利用 をご覧ください。

  1. 次のように JIRA 設定ツールを起動します :
  2. Click the Web Server tab.
    Screenshot: JIRA configuration tool — 'Web Server' tab
  3. 各フィールドに次のように入力します :

    フィールド
    ポートの制御 通常はデフォルトのままとします。必要に応じてポート番号を変更することもできます。「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 パス Specify the location of the keystore of your certificate. This will have been chosen when the keystore was saved in step 13 and should be <JIRA_HOME>/jira.jks.
    Keystore パスワード キーストアのパスワードを指定します。自己署名証明書を生成した場合は、このパスワードは手順 13 で証明書を生成したときにキーおよびキーストアに設定したパスワードです。
    Keystore エイリアス Each entry in the keystore is identified by an alias. We recommend using jira for this certificate as in step 10.
  4. Check Certificate in Key Store ボタンをクリックして、以下の項目を確認します :
    • キーストア内に証明書が存在すること。
    • キーストアのパスワードが有効であること。
    • キーエイリアスを使用してキーを見つけられること。
  5. Save ボタンをクリックして設定を保存します。

高度な設定

同一ホストにおける複数のインスタンスの実行

When running more than one instance on the same host, it is important to specify the address attribute in the <JIRA_INSTALLATION>/conf/server.xml file because by default the connector will listen on all available network interfaces, so specifying the address will prevent conflicts with connectors running on the same default port. See the Tomcat Connector documentation for more about setting the address attribute in The HTTP Connector Apache Tomcat 8 docs.

コマンドラインを使用したインストール

キーストアを作成します

  1. Java キーストア (JKS) の生成 :

    <JAVA_HOME>/keytool -genkey -alias jira -keyalg RSA -keystore <JIRA_HOME>/jira.jks

    (info)  姓名(first and last name)の部分には、サーバーの URL から "https://" を除いたもの (例えば jira.atlassian.com) を指定します。

  2. Enter an appropriate password (e.g.: changeit).
  3. 手順 2 のパスワードを使用して、署名のための CSR を生成します :

    <JAVA_HOME>/keytool -certreq -keyalg RSA -alias jira -keystore <JIRA_HOME>/jira.jks -file jira.csr
  4. CSR を 署名のために CA に送信します。CA からは、署名済み証明書および CA のルート証明書または中間証明書が返送されます。
    (warning) 証明書に署名がない場合は手順7に進んでください。
  5. ルート証明書、または中間証明書をインポートします :

    <JAVA_HOME>/keytool -import -alias rootCA -keystore <JIRA_HOME>/jira.jks -trustcacerts -file root.crt
  6. (CA から返送された) 署名済み証明書をインポートします :

    <JAVA_HOME>/keytool -import -alias jira -keystore <JIRA_HOME>/jira.jks -file jira.crt
  7. Keystore 内に証明書が存在することを検証します。

    <JAVA_HOME>/keytool -list -alias jira -keystore <JIRA_HOME>/jira.jks

    This must be a PrivateKeyEntry, if it is not the certificate setup has not successfully completed. For example:

    jira, Jan 1, 1970, PrivateKeyEntry,
    Certificate fingerprint (MD5): 73:68:CF:90:A8:1D:90:5B:CE:2A:2F:29:21:C6:B8:25

Keystore で Tomcat を更新する

  1. Create a backup of <JIRA_INSTALL>/conf/server.xml before editing it.

  2. HTTPS コネクタを編集し、キーストアを示すパラメーターを含めます。

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                  maxHttpHeaderSize="8192" SSLEnabled="true"
                  maxThreads="150" minSpareThreads="25"
                  enableLookups="false" disableUploadTimeout="true"
                  acceptCount="100" scheme="https" secure="true"
                  clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true"
                  keyAlias="jira" keystoreFile="<JIRA_HOME>/jira.jks" keystorePass="changeit" keystoreType="JKS"/>

    (info) Ensure to put the appropriate path in place of <JIRA_HOME> and change the port as needed.

  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"/>

    (info) Ensure the <PORT_FROM_STEP_1> is change to the appropriate value. In this example it would be 8443.

  4. Save the changes to server.xml.

  5. If redirection to HTTPS will be used (this is recommended), edit the <JIRA_INSTALL>/atlassian-jira/WEB-INF/web.xml file and add the following section at the end of the file, before the closing </web-app>. In this example, all URLs except attachments are redirected from HTTP to 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>
  6. 変更を保存したら JIRA を再起動します。

(info) You can also redirect users from HTTP URLs to HTTPS URLs by choosing the 'HTTP & HTTPS' profile in the JIRA configuration tool. This will redirect all HTTP URLs to HTTPS URLs.

特定のページのみを HTTPS へリダイレクトしたい場合、手動で行う必要があります。これを行うには、Jira 設定ツールで「HTTPS のみ」プロファイルを選択して設定を保存した後、HTTP URL を対応する HTTPS URL に手動でリダイレクトする、htaccess ファイルを Web サーバー上に作成します。

トラブルシューティング

上記にある通り Portecle を用いて生成した自己署名キーを使用する場合の、トラブルシューティングの TIPS をいくつか紹介します。

When you enter "https://localhost:<port number>" in your browser, if you get a message such as "Cannot establish a connection to the server at localhost:8443", look for error messages in your logs/catalina.out log file. Here are some possible errors with explanations.

ここをクリックして展開...
  • SSL + Apache + IE の問題 : IEを使用して SSL 経由で添付書類をアップロードした場合にエラーとなることが報告されています。これは IE のバグが原因で、Apache において次の設定を行うことで解決できます :

    BrowserMatch ".MSIE." \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    

    Google 検索を行うとこれに関する多くの情報が得られます。

  • キーストアが見つからない :

    java.io.FileNotFoundException: /home/user/.keystore (No such file or directory)
    

    This indicates that Tomcat cannot find the keystore. The keytool utility creates the keystore as a file called .keystore in the current user's home directory. For Unix/Linux the home directory is likely to be /home/<username>. For Windows it is likely to be C:\Documents And Settings\<UserName>.

    Make sure you are running JIRA as the same user who created the keystore. If this is not the case, or if you are running JIRA on Windows as a service, you will need to specify where the keystore file is in conf/server.xml. Add the following attribute to the connector tag you uncommented:

    keystoreFile="<location of keystore file>"
    

    This can also happen ("Cannot find /root/.keystore") if you add a keystoreFile attribute to the http connector in server.xml instead of the https connector.

  • キーストア内の証明書応答と証明書が同一 :

    keytool error: java.lang.Exception: Certificate reply and certificate in keystore are identical
    

    This error will happen if you have identical names or fingerprints, which is the result of attempting to recreate the cert in your existing keystore. If you need to recreate or update the Cert, you may remove the existing keystore and creating a fresh, new keystore. In this case, creating a new keystore and adding the related certs will fix the issue. The default path for it in this documentation is $JAVA_HOME/jre/lib/security/cacerts

  • 不正なパスワード :

    java.io.IOException: Keystore was tampered with, or password was incorrect

    You used a different password than "changeit". You must either use "changeit" for both the keystore password and for the key password for Tomcat, or if you want to use a different password, you must specify it using the keystorePass attribute of the Connector tag, as described above.

  • パスワードの不一致 :

    java.io.IOException: Cannot recover key
    

    Tomcat のキーストアパスワードとキーパスワードに異なるパスワードが使われていることを意味します。この二つのパスワードは同一でなければなりません。

  • 不正な証明書 :

    javax.net.ssl.SSLException: No available certificate corresponds to the SSL cipher suites which are enabled.
    

    If the Keystore has more than one certificate, Tomcat will use the first returned unless otherwise specified in the SSL Connector in conf/server.xml.

    Add the keyAlias attribute to the Connector tag you uncommented, with the relevant alias, for example:

     <Connector port="8443" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" disableUploadTimeout="true" useBodyEncodingForURI="true"
    acceptCount="100" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS"
    keystoreFile="/opt/local/.keystore"
    keystorePass="removed"
    keyAlias="tomcat"/>
  • Apache Portable Runtime (APR) の使用 :

    APR では異なる SSL エンジンが使用されており、次のような例外処理情報がログに記録されることがあります。

     SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8443]]
    LifecycleException:  Protocol handler initialization failed: java.lang.Exception: No Certificate file specified or invalid file format

    これは APR コネクターが OpenSSL を使用しており、キーストアの使用方法が異なることが原因です。この問題の解決策は 2 通りあります :


    • server.xml ファイルを編集して、アンコメントしたコネクタータグが APR プロトコルの代わりに Http11Protocol を指定することによって、Http11Protocol を使用して SSL コネクションを処理することができます。

      <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
        maxHttpHeaderSize="8192" SSLEnabled="true" keystoreFile="${user.home}/.keystore"
        maxThreads="150" enableLookups="false" disableUploadTimeout="true"
        acceptCount="100" scheme="https" secure="true"
        clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true"/>
    • コネクターが APR プロトコルを使用するように設定変更してください。この方法は証明書および秘密鍵に PEM エンコーディングを使用している場合にのみ有効です。キー生成の際に OpenSSL を使用している場合は、これらのファイルは PEM エンコーディングされています ‐ それ以外の場合はご利用の認証局にお問い合わせください。

      <Connector
        port="8443" maxThreads="200"
        scheme="https" secure="true" SSLEnabled="true"
        SSLCertificateFile="${user.home}/certificate.pem"
        SSLCertificateKeyFile="${user.home}/key.pem"
        clientAuth="optional" SSLProtocol="TLSv1"/>
      
  • Enabling Client Authentication: To enable client authentication in Tomcat, ensure that the value of the clientAuth attribute in your Connector element of your Tomcat's server.xml file is true.

    <Connector
    	...
    	clientAuth="true"
    	... />

    For more information about Connector element parameters, please refer to the SSL Configuration HOW-TO Tomcat 7 documentation.

最終更新日 2018 年 6 月 25 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.