Menu Close
第3章 HTTPS の設定
概要
本章では、HTTPS エンドポイントの設定方法を説明します。
3.1. その他の認証
3.1.1. ターゲットのみの認証
概要
アプリケーションがターゲットのみの認証用に設定されている場合、ターゲットはクライアントに対して自己認証しますが、図3.1「ターゲット認証のみ」 に示されるように、クライアントはターゲットオブジェクトに対して認証しません。
図3.1 ターゲット認証のみ

セキュリティーハンドシェイク
アプリケーションを実行する前に、クライアントとサーバーを以下のように設定する必要があります。
- 証明書チェーンがサーバーに関連付けられます。証明書チェーンは Java キーストアの形式で提供されます (「アプリケーションの独自の証明書の指定」 を参照)。
- クライアントは、1 つ以上の信頼できる認証局 (CA) の一覧を利用できます (「信頼できる CA 証明書の指定」 を参照)。
セキュリティーハンドシェイクの間、サーバーは証明書チェーンをクライアントに送信します (図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 相互認証

セキュリティーハンドシェイク
アプリケーションを実行する前に、クライアントとサーバーを以下のように設定する必要があります。
- クライアントとサーバーは両方とも関連する証明書チェーンを持ちます (「アプリケーションの独自の証明書の指定」 を参照)。
- クライアントとサーバーは両方とも、信頼できる認証局 (CA) の一覧で設定されます (「信頼できる CA 証明書の指定」 を参照)。
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 暗号スイートの設定 を参照)。