第3章 HTTPS の設定

概要

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

3.1. 認証代替

3.1.1. ターゲット専用認証

概要

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

図3.1 ターゲット認証のみ

ターゲット認証のみの認証パターン

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

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

セキュリティーハンドシェイク時に、サーバーは証明書チェーンをクライアントに送信します (図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 証明書を要求しないように指定します。必要な属性は false(デフォルト) に設定され、クライアント証明書が存在しないと TLS ハンドシェイク時に例外がトリガーされないことが指定されます。

注記

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

また、X.509 証明書をサーバーの HTTPS ポート (「アプリケーションの Own 証明書の指定」 を参照) に関連付け、サーバーに信頼される CA 証明書の一覧を提供する必要もあります (「信頼された CA 証明書の指定」 を参照してください)。

注記

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

3.1.2. 相互認証

概要

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

図3.2 相互認証

クライアントとサーバーの両方が他の当事者との認証を行う場合

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

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

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

HTTPS の例

クライアント側では、相互認証に必要なポリシー設定はありません。X.509 証明書をクライアントの HTTPS ポートに関連付けるだけです (「アプリケーションの Own 証明書の指定」 を参照)。信頼できる 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 ポート (「アプリケーションの Own 証明書の指定」 を参照) に関連付け、サーバーに信頼される CA 証明書の一覧を提供する必要もあります (「信頼された CA 証明書の指定」 を参照)。

注記

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