Подтвердить что ты не робот

Как настроить PlayFramework2 для поддержки SSL?

Я читал Как настроить сервер playframework для поддержки ssl и я также старался следовать http://www.playframework.org/documentation/1.1.1/releasenotes-1.1#https, но для меня это не работает

большое спасибо ~

Я прочитал документ для Play1, потому что я не могу найти более новую информацию для Play2 о https.

в application.conf, я добавил следующие строки:

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

Я набираю run в консоли воспроизведения и пытаюсь получить доступ к серверу в https://localhost:9443, который был отключен браузером без каких-либо записей в консольном выпуске

4b9b3361

Ответ 1

Он не будет работать с подходом, который вы принимаете. Вы ошибаетесь в примечаниях к выпуску ветки 1.x с ветвью 2.x.

в ветке 1.x, это возможно. Замечаний по выпуску достаточно, и они работали на меня.

Для ветки 2.1+, пожалуйста, обратитесь к комментарию @Christina. Поддержка была добавлена ​​в 2.1, и в разделе обсуждения представлена ​​подробная информация.

Цитата: ответ Джеймса Ропера

В режиме dev это очень просто, просто:

JAVA_OPTS = -Dhttps.port = 9443 play run

Play будет генерировать закрытый ключ и самоподписанный сертификат, который очевидно, что ваш браузер будет блокироваться с большим красным предупреждением. Это будет повторное использование, которое создало самоподписанный сертификат для каждого последующего запуска из Play, поэтому вы должны получить только ошибку браузера. очевидно этот самоподписанный сертификат, вероятно, не тот, который вы хотите производство. Также важно отметить, что сам подписали генерация сертификата будет работать только на JVM, которые используют солнце (например, Oracle и OpenJDK, но в первую очередь не IBM J9). На JVM, которые не используют их, вы получите NoClassDefFoundError, когда он пытается сгенерировать сертификат.

В prod (и эта конфигурация также применима к dev) вы ее настраиваете так же, как вы обычно настраиваете SSL на Java, через систему свойства. Здесь резюме:

https.port - порт, который следует использовать

https.keyStore. Путь к хранилище ключей, содержащее закрытый ключ и сертификат, если нет предоставил вам хранилище ключей

https.keyStoreType - ключ тип хранилища, по умолчанию - "JKS"

https.keyStorePassword. Пароль, по умолчанию - "

https.keyStoreAlgorithm. Алгоритм хранения ключей, по умолчанию используется алгоритм по умолчанию для платформ

https.trustStore. Это функция не была полностью реализована, в настоящее время она всегда будет использовать хранилище доверия JDK для проверки сертификатов на стороне клиента (которые вы может, конечно, настроить себя), укажите ли вы значение для этого или нет, если вы не укажете" noCA", и в этом случае он будет использовать доверие который доверяет всем сертификатам без проверки или проверки, что полезно, если вы используете проверку сертификата на стороне клиента Webid.

Для ветки 2.0 вам нужно поставить другой сервер для воспроизведения i.e либо apache/nginx/other, который прослушивает https и перенаправляет запрос на воспроизведение в http.

Инструкции по настройке внешнего сервера доступны по адресу http://www.playframework.org/documentation/2.0.1/HTTPServer

Итак, запустите игровой сервер на порту. Отправьте запрос apache с домена .com на 127.0.0.1:9443.

Пример конфигурации apache

    <VirtualHost *:443>

  ServerAdmin [email protected]
  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>

Надеюсь, что это поможет.

Ответ 3

Прямо сейчас вам, похоже, нужен обратный прокси-сервер, управляющий SSL для вас. Я нашел ticket и , обсуждая это.

Ответ 4

Это полезно для локального тестирования https:

activator "run -Dhttps.port=9005"

Затем укажите браузеру https://localhost:9005.

Ответ 5

Одна вещь, которую мы сделали, это использовать AWS ELB для обработки нашего SSL, а затем настроить пересылку SSL (HTTP → HTTPS) с помощью фильтров воспроизведения. Главное преимущество: загрузка SSL с вашего сервера, и вам не нужно запускать Apache или Nginx перед игрой (как указано в некоторых решениях).

Вы можете увидеть мой ответ здесь: fooobar.com/questions/245658/...

Я также немного расскажу об этом в своем блоге: http://www.mentful.com/2014/05/25/play-framework-filter-for-aws-elastic-load-balancer-forward-http-to-https/

Ответ 6

Я использую securesocial 3.0.3M. Установите

securesocial.ssl = true 

в securesocial.conf, и вам должно быть хорошо идти. Затем перезапустите свой sbt или активатор с помощью

JAVA_OPTS=-Dhttps.port=9443 activator run

Перейти к локальному хосту: 9443

пользоваться