SSL または HTTPS 上で Confluence を実行する

アトラシアンの製品はSSLに対応しています。しかし、アトラシアンのサポートはその設定に対して支援は行いません。したがって、アトラシアンは、そのためのサポートの提供を保証できません

  • SSL証明書の変更に際してサポートが必要であれば、証明書の提供元のベンダーに相談してください。
  • 設定でサポートが必要な場合、アトラシアン コミュニティに質問を登録してください。

このドキュメントでは、Confluence へ/からの転送中に、Confluence ログインおよびデータが暗号化されるように、Confluence を設定して HTTPS でのアクセスを有効する方法を示します。SSL 暗号化は、Confluence データやユーザーログインが、部外者から傍受されたり読まれたりするのを防ぐ優れた方法です。

ここでは以下のプラットフォームについて説明します。

  • Confluence - Confluence に同梱されている Apache Tomcat がアプリケーション サーバーであり、唯一サポートされるアプリケーション サーバーです。
    Apache HTTP Server (httpd) または NGINX を使用している場合は、「mod_proxy を使用した Apache」または「SSL を使用して NGINX の後ろで Confluence を実行する」で、外部 Web サーバーでの SSL 接続の終了方法を確認してください。 
  • Java 8 - JDK 1.8 is the supported Java version for Confluence. Note that you need the JDK, since it includes the keytool utility used in the instructions below. The JRE is not enough. 

(info) Confluence に対するデフォルト コネクタ ポートは8090です。

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

ステップ 1.新しい SSL 証明書を作成または要求する

HTTPS を有効にする前に、有効な SSL 証明書が必要になります。既に証明書が準備できている場合は、以下のステップ2まで飛ばしてください。

自己署名証明書を作成するか、認証局(CA、証明機関とも呼ばれます)によって発行された証明証を使用するかを選択することができます。以下で2つのオプションを説明しています。

コマンドライン ユーティリティの使用が快適ではない場合、Java キーツール コマンドラインの代わりに、キーストア エクスプローラー GUI が役立ちます。

証明書オプション 1 – 自己署名証明書を作成する

暗号化が必要だが web サイトのリクエストの身元を確認する必要がない場合、自己署名証明書が役立ちます。一般的に、自己署名証明書はテスト環境や社内ネットワーク(イントラネット)で使用します。

証明書が認証局(CA)によって署名されていないため、ユーザーはサイトが信頼されていないというメッセージを受け取り、サイトにアクセスする前に、証明書を承認するいくつかのステップを実行する必要があります。これは通常、サイトに初めてアクセスする際に発生します。

Follow the steps below to generate a certificate using Java's keytool utility. This tool is included in the JDK.

  1. Use Java's keytoolutility to generate the certificate:

    多くの SSL 発行機関(GoDaddy や RapidSSL を含みますが、これに限定されません)では、現在2048ビットのキー サイズが必要とされています。2048ビットの暗号鍵を生成するには、以下のクエリに '-keysize 2048' を追加します。
    • Windows の場合、コマンド プロンプトで以下のコマンドを実行します。

      "%JAVA_HOME%\bin\keytool" -genkeypair -keysize 2048 -alias tomcat -keyalg RSA -sigalg SHA256withRSA
    • OSX または UNIX ベースのシステムの場合、コマンド プロンプトで以下のコマンドを実行します。

      $JAVA_HOME/bin/keytool -genkeypair -keysize 2048 -alias tomcat -keyalg RSA -sigalg SHA256withRSA
  2. パスワードが要求された場合
    • 証明書に使用するパスワード(秘密鍵)を指定します。パスワード文字列は入力したとおりに表示されないことに注意してください。
    • 設定ファイルを編集する場合、次のステップでこれが必要になるため、選択したパスワードをメモします。
    • 既定のパスワードは "changeit" です。

      Tomcat には、特殊文字を含むパスワードに関する既知の問題があります。英数字のみを含むパスワードを使用する必要があります。

  3. Follow the prompts to specify your name, organization and location. This information is used to construct the X.500 Distinguished Name (DN) of the entity. The CN ("What is your first and last name?") must match the fully-qualified hostname of the server running Confluence, otherwise Tomcat will not be able to use the certificate for SSL. For example for a Confluence running on a server named "confluence.example.com":
    CN=confluence.example.com, OU=Java Software Division, O=Sun Microsystems Inc, C=US
  4. Enter 'y' to confirm the details.
  5. When asked for the password for 'tomcat' (the alias you entered in the keytool command above), press the 'Enter' key. This specifies that your keystore entry will have the same password as your private key. You MUST use the same password here as was used for the keystore password itself. This is a restriction of the Tomcat implementation.
  6. 証明書の準備ができました。以下のステップ2に移動します。

証明書オプション 2 – 認証局が発行した証明書を使用する

本番環境で Confluence を実行している場合、VeriSignThawte、または digicert などの認証局(CA、認証局とも呼ばれる)によって発行された証明書が必要になります。以下の手順は Tomcat のドキュメントのものです。

まず、ローカル証明書を作成し、その証明書に基づいて「証明書署名要求」(CSR)を作成します。CSR を選択した認証局に提出します。CA は証明書を生成するために、その CSR を使用します。

  1. Use Java's keytool utility to generate a local certificate, as described in the previous section.
  2. Use the keytool utility to generate a CSR, replacing the text <MY_KEYSTORE_FILENAME> with the path to and file name of the .keystorefile generated for your local certificate:

    keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore <MY_KEYSTORE_FILENAME>
    
  3. Submit the generated file called certreq.csr to your chosen certificate authority. Refer to the documentation on the CA's website to find out how to do this.
  4. CA が証明書を送信します。
  5. 新しい証明書をローカルのキーストアにインポートします。

    keytool -importcert -alias tomcat -keystore <MY_KEYSTORE_FILENAME> -file <MY_CERTIFICATE_FILENAME>

    一部の CA では、証明書をインポートする前に、中間証明書をインストールする必要があることに注意してください。CA のドキュメントを参照し、証明書を正しくインストールします。


Verisign または GoDaddy を使用してエラーが発生した場合、秘密鍵とともに証明書を PKCS12 フォーマットへエクスポートする必要があります。 

  1. まず、上の手順で追加した証明書をキーストアから削除します。

    keytool -delete -alias tomcat -keystore <MY_KEYSTORE_FILENAME>
  2. PKCS12 フォーマットへエクスポートします。

    openssl pkcs12 -export -in <MY_CERTIFICATE_NAME> -inkey <MY_PRIVATEKEY_NAME> -out <MY_PKC12_KEYSTORE_NAME> -name tomcat -CAfile <MY_ROOTCERTIFICATE_NAME-alsoCalledBundleCertificateInGoDaddy> -caname root
  3. PKCS12 から jks へインポートします。

    keytool -importkeystore -deststorepass <MY_DESTINATIONSTORE_PASSWORD> -destkeypass <MY_DESTINATIONKEY_PASSWORD> -destkeystore <MY_KEYSTORE_FILENAME> -srckeystore <MY_PKC12_KEYSTORE_NAME> -srcstoretype PKCS12 -srcstorepass <MY_PKC12_KEYSTORE_PASSWORD> -alias tomcat


ステップ 2.Confluence インストールのサーバー設定ファイルを編集する

  1. Edit the server configuration file at this location: <CONFLUENCE_INSTALLATION>/conf/server.xml.
  2. 以下の行をコメント アウトします。

    <Connector port="8443" maxHttpHeaderSize="8192"
         maxThreads="150" minSpareThreads="25"
         protocol="org.apache.coyote.http11.Http11NioProtocol"
         enableLookups="false" disableUploadTimeout="true"
         acceptCount="100" scheme="https" secure="true"
         clientAuth="false" sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2" SSLEnabled="true"
         URIEncoding="UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>"/>
  3. Replace the text <MY_CERTIFICATE_PASSWORD> with the password you specified for your certificate.
  4. 上記のように、属性 - 値ペア SSLEnabled="true"Connector 要素の一部であることを確認します。この属性が存在しない場合、Confluence へのアクセス試行がタイム アウトします。
  5. サーバー設定ファイルを保存します。

(warning) Avoid removing the http connector, as the Synchrony proxy health check, still requires HTTP. If you do not want to include the http connector, you can use the synchrony.proxy.healthcheck.disabled system property to disable the health check. 

また、内部 Synchrony プロキシは無効にしないでください ( synchrony.proxy.enabled  システム プロパティを false に設定する)。これにより、Tomcat で SSL を終了する際に問題が発生することがあります。 

ステップ 3.証明書の場所を指定する

Tomcat はデフォルトで、キーストア ファイルの名前が .keystore であることと、およびそのファイルが Tomcat を実行されているユーザーのホーム ディレクトリ (自身のホーム ディレクトリとは異なる可能性があります) にあることを想定しています。つまり、Tomcat はデフォルトでは以下の場所で SSL 証明書を探します。

  • Windows: C:\users\#CURRENT_USER#\.keystore
  • OS X および UNIX ベースのシステムの場合: ~/.keystore

Confluence を更新する際にディレクトリのコンテンツが削除されるため、キーストア ファイルを Confluence インストール ディレクトリに保存しないでください。

証明書をユーザー定義の場所に移動することができます。以下で説明するように、証明書をデフォルトの場所から移動させる場合、Tomcat が証明書を見つけることができるように、サーバー設定ファイルを更新する必要があります。

  1. Edit the server configuration file at this location: <CONFLUENCE_INSTALLATION>/conf/server.xml
  2. keystoreFile="<MY_CERTIFICATE_LOCATION>" 属性を Connector 要素に追加し、要素が次のようになるようにします。

            <Connector port="8443" maxHttpHeaderSize="8192"
                       maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                       enableLookups="false" disableUploadTimeout="true"
                       acceptCount="100" scheme="https" secure="true"
                       clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
                       URIEncoding="UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>"
                       keystoreFile="<MY_CERTIFICATE_LOCATION>"/>
    
  3. テキスト <MY_CERTIFICATE_LOCATION> を、.keystore ファイルの名前とパスを含む、証明書へのパスで置き換えます。
  4. サーバー設定ファイルを保存します。

ステップ 4.Confluence のベース URL を HTTPS に変更する

  1. ブラウザで、Confluence 管理コンソールに移動します。
  2. サーバーのベース URL を HTTPS に変更します。「サーバーのベース URL の設定」のドキュメントを参照します。
  3. Confluence を再起動して https://<MY_BASE_URL>:8443/ で Confluence にアクセスします。

ステップ 5.すべての URL を HTTPS にリダイレクトするため、セキュリティ制約を追加します。

HTTPS はアクティブ化されていて利用可能ですが、古い URL (http://localhost:8090) も引き続き使用可能です。URL を対応する HTTPS にリダイレクトする必要があります。これを行うには、web.xml にセキュリティ制約を追加します。これにより、Tomcat は SSL 以外のポートへのリクエストをリダイレクトするようになります。

  1. Confluence サイトが RSS マクロを使用しているかどうかを確認します。サイトで RSS マクロが有効化されている場合、web.xml ファイルを編集するのではなく、ファイアウォール ルールで URL リダイレクトを設定する必要がある場合があります。以下のステップはスキップし、「RSS フィード マクロ」ページの手順に従ってください。
  2. または、<CONFLUENCE_INSTALLATION>/confluence/WEB-INF/web.xml でファイルを編集します。
  3. 以下の宣言を、ファイルの末尾の </web-app> タグの前に追加します。

    <security-constraint>
      <web-resource-collection>
        <web-resource-name>Restricted URLs</web-resource-name>
        <url-pattern>/</url-pattern>
      </web-resource-collection>
      <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
    </security-constraint>
    
  4. Confluence を再起動し、http://localhost:8090 にアクセスします。https://localhost:8443/login.action にリダイレクトされます。

(info) Confluence には 2 つの web.xml ファイルがあります。もう片方は <CONFLUENCE_INSTALLATION>/conf/web.xml にあります。上述のように、セキュリティ成約は <CONFLUENCE_INSTALLATION>/confluence/WEB-INF/web.xml にのみ追加してください。

注意

  • 証明書の生成の背景情報: "keytool -genkeypair" コマンドは、公開鍵と関連付けられた秘密鍵のキー ペアを生成し、それらをキーストアに保存します。コマンドは公開鍵を X.509 v3 自己署名証明書にパッケージ化し、単一要素の証明書チェインとして保存します。この証明書チェーンと秘密鍵は新しいキーストア エントリに保存され、コマンドで指定した alias で識別されます。Java SE のドキュメントに、このユーティリティの概要が記載されています。
  • カスタム SSL ポート: SSL コネクタが実行されているポートを既定値の 8443 から変更した場合、新しい SSL ポートを反映するには、標準 HTTP コネクタの redirectPort 属性を更新する必要があります。Tomcat は、受信リクエストの安全性を確保する必要がある場合のリダイレクト先のポートを確認するために、この情報を必要とします。
  • Multiple instances on the same host: When running more than one instance on the same host, it is important to specify the address attribute in the <CONFLUENCE_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: https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

            <Connector port="8443" address="your.confluence.url.com" maxHttpHeaderSize="8192"
                       maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                       enableLookups="false" disableUploadTimeout="true"
                       acceptCount="100" scheme="https" secure="true"
                       clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
                       URIEncoding="UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>"
                       keystoreFile="<MY_CERTIFICATE_LOCATION>"/>
    
  • Protection for logins only or for individual spaces: As of Confluence 3.0, Atlassian does not support HTTPS for logins only or for specific pages. We support only site-wide HTTPS. To see the reasoning behind this decision, please see CONF-18120 and CONF-4116.

トラブルシューティング

  • Internet Explorer で添付ファイルをダウンロードできない問題: サイト全体に SSL を適用すると、IE で添付ファイルを適切にダウンロードできなくなる可能性があります。この問題を修正するには、<CONFLUENCE_INSTALLATION>/conf/server.xml を編集し、<Context ... /> 要素に次の内容を追加します。

    <Valve className="org.apache.catalina.authenticator.NonLoginAuthenticator"
           disableProxyCaching="true" securePagesWithPragma="false" />
最終更新日 2018 年 9 月 20 日

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

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