ssl playframework playframework-2.0

¿Cómo configurar PlayFramework2 para admitir SSL?



playframework-2.0 (6)

He leído Cómo configurar el servidor playframework para que admita SSL y también intenté seguir http://www.playframework.org/documentation/1.1.1/releasenotes-1.1#https pero no funciona para mí

muchas gracias ~

Leí el documento para Play1 porque no puedo encontrar ninguna información más actualizada para Play2 sobre https.

en application.conf, agregué estas líneas:

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

Escribo run en la consola de reproducción y trato de acceder al servidor en https://localhost:9443 el navegador agotó el tiempo de espera sin que haya nada registrado en la salida de la consola


En este momento parece que necesita un proxy inverso para administrar el SSL por usted. Encontré un boleto y un hilo discutiendo esto.


Esto es útil para probar localmente https:

activator "run -Dhttps.port=9005"

Luego, dirija su navegador a https://localhost:9005 .


Estoy usando securesocial 3.0.3M. Conjunto

securesocial.ssl = true

en securesocial.conf y deberías estar listo para ir. Luego reinicia tu sbt o activador con

JAVA_OPTS=-Dhttps.port=9443 activator run

Ir a localhost: 9443

disfrutar



No funcionará con el enfoque que está tomando. Está confundiendo notas de publicación de la rama 1.x con la rama 2.x.

en la rama 1.x , es posible. Las notas de la versión son suficientes y funcionó para mí.

Para la rama 2.1+ , consulte el comentario de @ Christina. Se ha agregado soporte en 2.1 y el hilo de discusión proporciona detalles.

Citando la respuesta de James Roper

En el modo dev, es muy fácil, solo:

JAVA_OPTS = -Dhttps.port = 9443 play run

Play generará una clave privada y un certificado autofirmado, que obviamente su navegador se resistirá con una gran advertencia roja. Reutilizará ese certificado autofirmado generado para cada ejecución posterior de Play, por lo que solo debería obtener el error del navegador una vez. Obviamente, este certificado autofirmado probablemente no sea lo que quieres en producción. También es importante tener en cuenta que la generación del certificado autofirmado solo funcionará en las JVM que utilizan las bibliotecas de seguridad solar (por ejemplo, Oracle y OpenJDK, pero sobre todo no IBM J9). En las JVM que no las usan, obtendrá un NoClassDefFoundError cuando intente generar el certificado.

En prod (y esta configuración también se aplica a dev) se configura de la misma manera que se configura SSL normalmente en Java, a través de las propiedades del sistema. Aquí hay un resumen:

https.port - El puerto que se debe usar

https.keyStore - La ruta al almacén de claves que contiene la clave privada y el certificado, si no se proporciona genera un almacén de claves para usted

https.keyStoreType : el tipo de almacén de claves, por defecto es "JKS"

https.keyStorePassword - La contraseña, por defecto es ""

https.keyStoreAlgorithm - El algoritmo del almacén de claves, se predetermina al algoritmo predeterminado de la plataforma

https.trustStore : esta característica no se ha implementado por completo, actualmente siempre usará el almacén de confianza de JDK para verificar los certificados del lado del cliente (que usted mismo puede configurar usted mismo) si proporciona un valor para esto o no, a menos que especifique " noCA ", en cuyo caso, utilizará un almacén de confianza que confía en todos los certificados sin validación o verificación, lo que es útil si se usa la verificación del certificado del lado del cliente web.

Para la rama 2.0 , debe poner otro servidor enfrente del juego, es decir, apache / nginx / otro que escucha en https y reenvía la solicitud para jugar en http.

Las instrucciones para configurar un servidor de interfaz están disponibles en http://www.playframework.org/documentation/2.0.1/HTTPServer

Entonces, ejecute su servidor de reproducción en un puerto. Tenga la solicitud de reenvío de apache de domain.com a 127.0.0.1:9443.

Ejemplo de configuración de 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>

Espero eso ayude.


Una cosa que hicimos fue utilizar AWS ELB para manejar nuestro SSL, luego configuramos el reenvío SSL (HTTP -> HTTPS) usando un filtro de juegos. El principal beneficio es que elimina la carga de SSL de su servidor y no tiene que ejecutar Apache o Nginx antes de jugar (como lo señala una solución).

Puedes ver mi respuesta aquí: https://.com/a/23646948/690164

También escribo un poco más sobre esto en mi blog: http://www.mentful.com/2014/05/25/play-framework-filter-for-aws-elastic-load-balancer-forward-http-to- https /