web-dev-qa-db-ja.com

SSLをサポートするようにPlayFramework2を構成する方法は?

sslをサポートするようにplayframeworkサーバーを構成する方法 を読み、フォローしようとしました http://www.playframework.org/documentation/1.1.1/releasenotes-1.1#https しかし、それは私には機能しません

どうもありがとう〜

Httpsに関するPlay2の更新情報が見つからないため、Play1のドキュメントを読みました。

application.confに、次の行を追加しました。

https.port=9443
certificate.key.file=conf/Host.key
certificate.file=conf/Host.cert

再生コンソールにrunと入力し、コンソール出力に何もログインせずにブラウザがタイムアウトしたhttps://localhost:9443でサーバーにアクセスしようとしました。

18
Chris

それはあなたが取っているアプローチでは機能しません。 1.xブランチのリリースノートを2.xブランチと間違えています。

1.xブランチでは可能です。リリースノートで十分で、私にとってはうまくいきました。

2.1以降のブランチについては、@ Christinaのコメントを参照してください。 2.1でサポートが追加され、ディスカッションスレッドで詳細が提供されます。

ジェームズ・ローパーの反応を引用する

開発モードでは、非常に簡単です。

Java_OPTS = -Dhttps.port = 9443 play run

Playは秘密鍵と自己署名証明書を生成します。これは明らかに、ブラウザが大きな赤い警告を表示します。生成された自己署名証明書は、その後のPlayの実行ごとに再利用されるため、ブラウザエラーは1回だけ発生します。明らかに、この自己署名証明書は、おそらく本番環境で必要なものではありません。また、自己署名証明書の生成は、Sunセキュリティライブラリ(OracleやOpenJDKなど、特にIBM J9ではない)を使用するJVMでのみ機能することに注意してください。これらを使用しないJVMでは、証明書を生成しようとするとNoClassDefFoundErrorが発生します。

Prod(およびこの構成はdevにも適用されます)では、システムプロパティを使用して、通常JavaでSSLを構成するのとほぼ同じ方法で構成します。要約は次のとおりです。

https.port-使用する必要のあるポート

https.keyStore-秘密鍵と証明書を含むキーストアへのパスが提供されていない場合は、キーストアが生成されます

https.keyStoreType-キーストアタイプ。デフォルトは「JKS」です。

https.keyStorePassword-パスワード。デフォルトは「」

https.keyStoreAlgorithm-キーストアアルゴリズム、デフォルトはプラットフォームのデフォルトアルゴリズム

https.trustStore-この機能は完全には実装されていません。現在、クライアント側の証明書を検証するために常にJDKのトラストストアを使用します(もちろん、自分で構成します)これに値を指定するかどうかにかかわらず、「noCA」を指定しない限り、「noCA」を指定しない限り、検証または検証なしですべての証明書を信頼するトラストストアが使用されます。これは、webidクライアント側を使用する場合に役立ちます。証明書の検証。

2.0ブランチの場合、別のサーバーをプレイの前に配置する必要があります。つまり、httpsをリッスンしてhttpでプレイするリクエストを転送するApache/nginx/otherのいずれかです。 。

フロントエンドサーバーのセットアップ手順は、 http://www.playframework.org/documentation/2.0.1/HTTPServer で入手できます。

したがって、プレイサーバーをポートで実行します。 domain.comから127.0.0.1:9443にApache転送リクエストを送信します。

サンプルApache構成

    <VirtualHost *:443>

  ServerAdmin webmaster@localhost
  ServerName example.com
  ServerAlias *.example.com

  ErrorLog ${Apache_LOG_DIR}/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog ${Apache_LOG_DIR}/ssl_access.log combined
  ProxyPreserveHost On
#  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/


  #   SSL Engine Switch:
  #   Enable/Disable SSL for this virtual Host.
  SSLEngine on

  #   A self-signed (snakeoil) certificate can be created by installing
  #   the ssl-cert package. See
  #   /usr/share/doc/Apache2.2-common/README.Debian.gz for more info.
  #   If both key and certificate are stored in the same file, only the
  #   SSLCertificateFile directive is needed.
  SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
  SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key


  #   Certificate Authority (CA):
  #   Set the CA certificate verification path where to find CA
  #   certificates for client authentication or alternatively one
  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
  </Directory>

  BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
  # MSIE 7 and newer should be able to use keepalive
  BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

それが役に立てば幸い。

24
Nasir

Play(2.2.x)の現在のバージョンをセットアップするためのドキュメントはここにあります: http://www.playframework.com/documentation/2.2.x/ConfigureHttps

5
Jon Onstott

現在、SSLを管理するリバースプロキシが必要なようです。 ticketthread がこれについて議論しているのを見つけました。

4
msung

これは、httpsをローカルでテストする場合に役立ちます。

activator "run -Dhttps.port=9005"

次に、ブラウザでhttps://localhost:9005を指定します。

3
Matthias Braun

AWS ELBを使用してSSLを処理し、再生フィルターを使用してSSL転送(HTTP-> HTTPS)を設定しました。主な利点は、サーバーからSSLの負荷を取り除き、プレイの前にApacheまたはNginxを実行する必要がないことです(一部のソリューションが指摘しているように)。

あなたはここで私の答えを見ることができます: https://stackoverflow.com/a/23646948/690164

また、ブログにもう少し詳しく書いています: http://www.mentful.com/2014/05/25/play-framework-filter-for-aws-elastic-load-balancer-forward- http-to-https /

0
Dimitry

私はsecuresocial3.0.3Mを使用しています。セットする

securesocial.ssl = true 

securesocial.confで、あなたは行ってもいいはずです。次に、sbtまたはアクティベーターをで再起動します

Java_OPTS=-Dhttps.port=9443 activator run

Localhost:9443に移動します

楽しい

0
odroz