18

How to configure playframework server to support ssl を読み 、 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

play コンソールに入力し、コンソール出力に何も記録されずにブラウザがタイムアウトしたときrunにサーバーにアクセスしようとしましたhttps://localhost:9443

4

6 に答える 6

24

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

1.xブランチでは、可能です。リリース ノートは十分であり、私にとっては役に立ちました。

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

James Roper の回答を引用する

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

JAVA_OPTS=-Dhttps.port=9443 play run

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

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

https.port - 使用するポート

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

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

https.keyStorePassword - パスワード、デフォルトは ""

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

https.trustStore - この機能は完全には実装されていません。現在、「この場合、検証や検証なしですべての証明書を信頼する信頼ストアを使用します。これは、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>

それが役に立てば幸い。

于 2012-05-25T17:08:23.190 に答える
5

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

于 2014-04-18T01:25:02.827 に答える
4

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

于 2012-05-25T15:57:49.667 に答える
3

これは、https をローカルでテストする場合に便利です。

activator "run -Dhttps.port=9005"

次に、ブラウザで にアクセスしhttps://localhost:9005ます。

于 2015-12-22T18:18:19.120 に答える
0

私たちが行ったことの 1 つは、AWS ELB を使用して SSL を処理し、play フィルターを使用して 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/

于 2014-06-18T15:25:21.527 に答える