Documentation

You are viewing the documentation for the 2.6.x development release. The latest stable release series is 2.4.x.

§トラストストアとキーストアの設定

トラストストアとキーストアは X.509 証明書を含んでいます。これらの証明書は公開 (または秘密) 鍵を含んでおり、TrustManager または KeyManager の配下でそれぞれ組織され、管理されています。

X.509 証明書を生成する必要がある場合、より詳細は 証明書の生成 を参照してください。

§トラストマネージャの設定

トラストマネージャ は、認証局より発行されたルート証明書であるトラストアンカーを維持するために使われます: トラストマネージャは、リモート認証クリデンシャル (ひいては、その接続) を信頼すべきかどうかを決定します。HTTPS クライアントの場合、リクエストの大半はトラストマネージャを使います。

まったく設定していない場合、WS は cacerts キーストアを ${java.home}/lib/security/cacerts 内で指し示すデフォルトのトラストマネージャを使います。トラストマネージャを明示的に指定した場合、デフォルトの設定は上書きされ、cacerts ストアは取り込まれません。

デフォルトのトラストストアを使いつつ、証明書を含む別のストアを追加したい場合、トラストマネージャに複数のストアを定義することができます。CompositeX509TrustManager は、マッチするストアが見つかるまで、それぞれのストアを順番に試します。

play.ws.ssl {
  trustManager = {
      stores = [
        { path: ${store.directory}/truststore.jks, type: "JKS" }  # Added trust store
        { path: ${java.home}/lib/security/cacerts, password = "changeit" } # Default trust store
      ]
  }
}

注意: トラストストアは CA 証明書と公開鍵だけを、通常は JKS または PEM にて含むべきです。PKCS12 フォーマットもサポートされていますが、PKCS12 は リファレンス・ガイド に記されている通り、トラストストアに秘密鍵を保持すべきではありません。

§キーマネージャの設定

キーマネージャ は、リモートホストの鍵を提示するために使われます。キーマネージャは一般的に (相互 TLS として知られている) クライアント認証のためだけに使われます。

CompositeX509KeyManager には、トラストマネージャと同じ方法で複数のストアが含まれることがあります。

play.ws.ssl {
    keyManager = {
      stores = [
        {
          type: "pkcs12",
          path: "keystore.p12",
          password: "password1"
        },
      ]
    }
}

注意: 秘密鍵を保持するキーストアは、リファレンス・ガイド に示されている通り、PKCS12 フォーマットを使用するべきです。

§ストアの設定

ストアは、トラストストアおよびキーストアの両方に使用される キーストア オブジェクトに相当します。ストアは タイプPKCS12, JKS または (Base64 エンコード DER 証明書としても知られる) PEM – を持つ場合があり、関連するパスワードを保持する場合があります。

ストアは path または data 属性のいずれかを持つ必要があります。path 属性はファイルシステムパスでなければなりません。

{ type: "PKCS12", path: "/private/keystore.p12" }

data 属性には PEM エンコードされた認証文字列が含まれていなければなりません。

{
  type: "PEM", data = """
-----BEGIN CERTIFICATE-----
...certificate data
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...certificate data
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...certificate data
-----END CERTIFICATE-----
"""
}

§デバッグ

キーマネージャ / トラストマネージャをデバッグする場合は、以下のフラグを設定してください:

play.ws.ssl.debug = {
  ssl = true
  trustmanager = true
  keymanager = true
}

§併せて読みたい

ほとんどの場合、証明書を一旦インストールしてしまえば大がかりな設定が必要になることはありません。設定に難しいところがある場合は、以下のブログ記事が役に立つかも知れません:

Next: プロトコルの設定


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。