Menu Close

第3章 HTTPS の設定

概要

本章では、HTTPS エンドポイントの設定方法を説明します。

3.1. その他の認証

3.1.1. ターゲットのみの認証

概要

アプリケーションがターゲットのみの認証用に設定されている場合、ターゲットはクライアントに対して自己認証しますが、図3.1「ターゲット認証のみ」 に示されるように、クライアントはターゲットオブジェクトに対して認証しません。

図3.1 ターゲット認証のみ

authentication pattern for target authentication only

セキュリティーハンドシェイク

アプリケーションを実行する前に、クライアントとサーバーを以下のように設定する必要があります。

セキュリティーハンドシェイクの間、サーバーは証明書チェーンをクライアントに送信します (図3.1「ターゲット認証のみ」 を参照)。その後、クライアントは信頼できる CA リストを検索し、サーバーの証明書チェーンの CA 証明書のいずれかに一致する CA 証明書を検索します。

HTTPS の例

クライアント側では、ターゲットのみの認証に必要なポリシー設定はありません。X.509 証明書を HTTPS ポートに 関連付けずに、単にクライアントを設定します。ただし、信頼できる CA 証明書の一覧をクライアントに提供する必要があります (「信頼できる CA 証明書の指定」 を参照)。

サーバー側では、サーバーの XML 設定ファイルで sec:clientAuthentication 要素がクライアント認証を必要としないことを確認してください。この要素は省略できます。この場合、デフォルトのポリシーではクライアント認証を 必要としません。ただし、sec:clientAuthentication 要素が存在する場合は、以下のように設定する必要があります。

<http:destination id="{Namespace}PortName.http-destination">
  <http:tlsServerParameters secureSocketProtocol="TLSv1">
    ...

    <sec:clientAuthentication want="false" required="false"/>
  </http:tlsServerParameters>
</http:destination>
重要

Poodle 脆弱性 (CVE-2014-3566) から保護するために、サーバー側で secureSocketProtocol を TLSv1 に設定する必要があります。

want 属性を false (デフォルト) に設定され、サーバーが TLS ハンドシェイク中にクライアントから X.509 証明書を要求しないことを指定します。required 属性も false (デフォルト) に設定され、クライアント証明書がないことで、TLS ハンドシェイク中に例外がトリガーされることがないように指定します。

注記

want 属性は true または false のいずれかに設定できます。true に設定すると、want 設定により、TLS ハンドシェイク中にサーバーがクライアント証明書を要求しますが、required 属性が false に設定されている限り、証明書がないクライアントに対する例外は発生しません。

X.509 証明書をサーバーの HTTPS ポートに関連付け (「アプリケーションの独自の証明書の指定」 を参照)、信頼できる CA 証明書の一覧をサーバーに提供 (「信頼できる CA 証明書の指定」 を参照) する必要もあります。

注記

暗号化スイートを選択すると、ターゲットのみの認証をサポートするかどうかに影響を及ぼす可能性があります (4章HTTPS 暗号スイートの設定を参照)。

3.1.2. 相互認証

概要

アプリケーションが相互認証用に設定されている場合、ターゲットはクライアントに対して自己認証し、クライアントはターゲットに対して自己認証します。このシナリオは、図3.2「相互認証」 で説明されています。この場合、サーバーおよびクライアントにはそれぞれ、セキュリティーハンドシェイクに X.509 証明書が必要です。

図3.2 相互認証

both client and server authenticate with the other party

セキュリティーハンドシェイク

アプリケーションを実行する前に、クライアントとサーバーを以下のように設定する必要があります。

TLS ハンドシェイクの間、サーバーは証明書チェーンをクライアントに送信し、クライアントはその証明書チェーンをサーバーに送信します (図3.1「ターゲット認証のみ」 を参照)。

HTTPS の例

クライアント側では、相互認証に必要なポリシー設定はありません。単に X.509 証明書をクライアントの HTTPS ポートに関連付けてください (「アプリケーションの独自の証明書の指定」 を参照)。信頼できる CA 証明書の一覧が含まれるクライアントを提供する必要もあります (「信頼できる CA 証明書の指定」 を参照)。

サーバー側では、サーバーの XML 設定ファイルで sec:clientAuthentication 要素がクライアント認証を 必要 とするよう設定されていることを確認します。以下に例を示します。

<http:destination id="{Namespace}PortName.http-destination">
  <http:tlsServerParameters secureSocketProtocol="TLSv1">
    ...
    <sec:clientAuthentication want="true" required="true"/>
  </http:tlsServerParameters>
</http:destination>
重要

Poodle 脆弱性 (CVE-2014-3566) から保護するために、サーバー側で secureSocketProtocol を TLSv1 に設定する必要があります。

ここで、want 属性は true に設定され、サーバーが TLS ハンドシェイク中にクライアントから X.509 証明書を要求することを指定します。required 属性も true に設定されます。クライアント証明書がない場合に TLS ハンドシェイク中に例外がトリガーされることを指定します。

X.509 証明書をサーバーの HTTPS ポートに関連付け (「アプリケーションの独自の証明書の指定」 を参照)、信頼できる CA 証明書の一覧をサーバーに提供 (「信頼できる CA 証明書の指定」 を参照) する必要もあります。

注記

暗号化スイートを選択すると、相互認証がサポートされるかどうかに影響を及ぼす可能性があります (4章HTTPS 暗号スイートの設定 を参照)。