Documentation

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

§WS SSL クイックスタート

この章は、HTTPS を使ってリモートの web サービスに接続する必要があるものの、手順書をすべて読み通したくはない人に向けたものです。wewb サービスをセットアップしたり、クライアント認証を設定する必要がある場合は、次の章 に進んでください。

§HTTPS によるリモートサーバへの接続

リモートサーバがよく知られた認証局によって署名された証明書を使っている場合、WS は追加の設定をすることなく、そのままの状態で動作します。やったね!

もし web サービスがよく知られた認証局を使っていない場合、プライベート CA か、または自己署名証明書のいずれかを使っています。これは curl を使って簡単に確かめることができます:

curl https://financialcryptography.com # uses cacert.org as a CA

以下のようなエラーが発生した場合は:

curl: (60) SSL certificate problem: Invalid certificate chain
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

この CA の証明書を取得し、トラストストアに追加する必要があります。

§ルート CA 証明書の取得

理想的には、これは帯域外で行われるべきです: web サービスの所有者は、ルート CA 証明書を偽装できない方法で、できれば人が直接提供すべきです。

コミュニケーション手段がない場合 (これは 非推奨 です)、JDK 1.8 のキーツール を使って、証明書チェーンからルート CA 証明書を取得できることがあります:

keytool -printcert -sslserver playframework.com

これはルート証明書として #2 を返します:

Certificate #2
====================================
Owner: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE
Issuer: CN=GlobalSign Root CA, OU=Root CA, O=GlobalSign nv-sa, C=BE

エクスポートできるフォーマットとして証明書チェーンを取得するには、-rfc オプションを使います:

keytool -printcert -sslserver playframework.com -rfc

これは一連の証明書を PEM フォーマットで返すでしょう:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

これはコピーしてファイルに貼り付けることができます。チェーンの最後の最後にある証明書がルート CA 証明書のはずです。

注意: すべての web サイトがルート CA 証明書を含むわけではありません。キーツールか certificate decoder を使って証明書をデコードし、正しい証明書であることを確認すべきです。

§トラストマネージャを PEM ファイルに向ける

PEM フォーマットであることをはっきりと指定しながら、以下の内容を conf/application.conf に追加します:

play.ws.ssl {
  trustManager = {
    stores = [
      { type = "PEM", path = "/path/to/cert/globalsign.crt" }
    ]
  }
}

これは、トラストマネージャに証明書のデフォルト cacerts ストアを無視し、カスタムの CA 証明書のみを使うよう指示します。

これで WS が設定されたので、次のようにして接続が動作していることを確認することができます:

WS.url("https://example.com").get()

example configurations ページでより多くの例を見ることができます。

Next: X.509 証明書の生成


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