Menu Close

3.3. アプリケーションの独自の証明書の指定

3.3.1. HTTPS 用の独自の証明書のデプロイ

概要

HTTPS トランスポートを使用する場合は、XML 設定ファイルを使用してアプリケーションの証明書がデプロイされます。

手順

HTTPS トランスポート用にアプリケーション独自の証明書をデプロイするには、以下の手順を実行します。

  1. Java キーストア形式 CertName.jks で、アプリケーション証明書を取得します。Java キーストア形式で証明書を作成する方法は、「CA を使用した Java キーストアでの署名済み証明書の作成」 を参照してください。

    注記

    HTTPS クライアント (Web ブラウザーなど) の一部は、サーバーがデプロイされるホスト名と一致する証明書の ID を必要とする URL 整合性チェック を実行します。詳細は、「HTTPS 証明書における特別な要件」 を参照してください。

  2. 証明書のキーストア (CertName.jks) をデプロイメントホストの証明書ディレクトリー (例: X509Deploy/certs) にコピーします。

    証明書ディレクトリーは、管理者および他の特権ユーザーのみが書き込み可能なセキュアなディレクトリーでなければなりません。

  3. 関連する XML 設定ファイルを編集して、証明書キーストア CertName.jks の場所を指定します。関連する HTTPS ポートの設定に sec:keyManagers 要素を含める必要があります。

    たとえば、以下のようにクライアントポートを設定できます。

    <http:conduit id="{Namespace}PortName.http-conduit">
      <http:tlsClientParameters>
        ...
        <sec:keyManagers keyPassword="CertPassword">
          <sec:keyStore type="JKS"
                        password="KeystorePassword"
                        file="certs/CertName.jks"/>
        </sec:keyManagers>
        ...
      </http:tlsClientParameters>
    </http:conduit>

    keyPassword 属性は証明書の秘密鍵を復号化するために必要なパスワード (CertPassword) を指定し、type 属性はトラストストアが JKS キーストア実装を使用することを指定し、password 属性は CertName.jks キーストアへのアクセスに必要なパスワード (KeystorePassword) を指定します。

    以下のようにサーバーポートを設定します。

    <http:destination id="{Namespace}PortName.http-destination">
      <http:tlsServerParameters secureSocketProtocol="TLSv1">
        ...
        <sec:keyManagers keyPassword="CertPassword">
          <sec:keyStore type="JKS"
                        password="KeystorePassword"
                        file="certs/CertName.jks"/>
        </sec:keyManagers>
        ...
      </http:tlsServerParameters>
    </http:destination>
    重要

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

    警告

    アプリケーション証明書 (例: X509Deploy/certs/) を含むディレクトリーは、安全なディレクトリー (つまり、管理者のみが読み取り/書き込み可能) である必要があります。

    警告

    設定ファイルにはプレーンテキストのパスワードが含まれているため、XML 設定ファイルを含むディレクトリーは、安全なディレクトリー (つまり、管理者のみが読み取り/書き込み可能) でなければなりません。