Documentation

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

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