2012-05-25 4 views
18

는 내가 더 이상 업데이트 찾을 수 없기 때문에 SSL을 지원하도록 PlayFramework2를 설정하는 방법은 무엇입니까?

내가 Play1의 문서를 읽을 ~

많은 감사를 나는 How to configure playframework server to support ssl 읽은 나는 또한 http://www.playframework.org/documentation/1.1.1/releasenotes-1.1#https을 따르려고 노력하지만 나를 위해 작동하지 않습니다 https에 대한 Play2 정보.

는 application.conf에, 나는이 라인을 추가 :

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

내가 플레이 콘솔에서 run 입력하고 콘솔 출력에 기록 아무것도하지 않고 브라우저가 시간 초과 https://localhost:9443에서 서버에 액세스하려고를

+0

작동하지 않는 기능은 무엇입니까? 스택 트레이스 및 구성 파일과 같은 자세한 정보를 제공하십시오. 또한 Play 1에 대한 설명서를 읽었으며 Play 2 용 SSL을 구성하려고하므로 잘못된 설명서를 읽으십시오 –

+0

@ Li-o 더 자세한 정보로 업데이트했습니다. https 구성에 대한 Play2의 업데이트 된 설명서가 있습니까? 그걸 나와 나눌 수 있니? 고마워요 ~ – Chris

답변

24

복용하는 방식에 따라 작동하지 않습니다. 1.x 지점의 릴리스 정보를 2.x 지점과 혼동하고 있습니다.

1x 분기에서 가능합니다. 릴리스 노트가 충분하고 나를 위해 일했습니다.

2.1+ 지점의 경우 @ Christina의 의견을 참조하십시오. 2.1에서 지원이 추가되었으며 토론 스레드에서 세부 정보를 제공합니다. dev에 모드에서 제임스 로퍼의 반응

을 인용

은, 그냥, 아주 쉽게 :

JAVA_OPTS = -Dhttps.port = 9443 플레이 실행

플레이는 개인 키와 자기를 생성합니다 분명히 귀하의 브라우저가 큰 빨간색 경고와 함께 보크 것입니다 어떤 서명 된 인증서. Play의 각 후속 실행 에 대해 자체 서명 된 인증서를 생성 한 재사용이므로 브라우저 오류 만 한 번 가져와야합니다. 분명히 자체 서명 인증서는 아마도 제작에서 원하는 것이 아닙니다. 또한주의해야 할 점은 자체 서명 된 인증서 생성은 태양 보안 라이브러리 (예 : Oracle 및 OpenJDK)를 사용하는 JVM에서만 작동하지만 특히는 J9가 아닌 JVM에서 작동한다는 점도 중요합니다. 이들을 사용하지 않는 JVM에서는 인증서 생성을 시도 할 때 NoClassDefFoundError가 표시됩니다.

prod (또한이 구성은 dev에도 적용됩니다)에서는 속성을 통해 시스템에 Java를 사용하여 SSL을 구성하는 것과 동일한 방식으로 구성합니다. -

HTTPS

을 사용해야 포트

https.port : 여기에 요약입니다.keyStore의 - 주요 저장소 유형, "JKS"기본값

- 개인 키와 인증서가 포함 된 키 스토어에 대한 경로를 제공하지 경우는

https.keyStoreType에 대한 키 스토어를 생성 https.keyStorePassword - 암호,

https.keyStoreAlgorithm ""에 기본값 - 키 저장소 알고리즘,플랫폼의 기본 알고리즘 617,451,515,기본값

https.trustStore -이 기능은 완전히 현재 항상 (클라이언트 측 인증서를 검증하기위한 의 JDK 신뢰 저장소를 사용, 구현되지 않은 당신 코스 구성의 캔 사용자가 "noCA"를 지정하지 않는 한 에 대한 값을 제공하든 그렇지 않든간에 유효성 검사 또는 확인없이 모든 인증서를 신뢰하는 저장소를 사용합니다. 은 webid 클라이언트를 사용하는 경우에 유용합니다 측면 인증서 확인.

2.0 분기를 들어, 플레이 즉 뿅 다른 서버를 넣어야 하나 아파치/nginx를/기타 HTTPS에서 수신하고 HTTP를 재생하도록 요청을 전달한다. 설정에

지침 프런트 엔드 서버는 그래서 포트에서 당신의 플레이 서버를 실행 http://www.playframework.org/documentation/2.0.1/HTTPServer

에서 사용할 수 있습니다. 아파치가 domain.com에서 127.0.0.1:9443으로 요청하도록하십시오.

샘플 아파치 설정

<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> 

는 도움이되기를 바랍니다.

+7

이것은 작성 당시에 사실 이었지만 여기에 [이 this에 의해 표시된 바와 같이 SSL 지원이 Play 2.1에 추가되었습니다 Google 그룹스 주제] (https://groups.google.com/d/topic/play-framework/FeTUDQwaEPg/discussion). – Christina

+0

업데이트 해 주셔서 감사합니다. 답변을 수정하겠습니다. – Nasir

+0

자체 서명 된 인증서를 사용하지 않는 등의 SSL 인증서를 만드는 경우 생성 된 인증서의 공개 키를 Play 클라이언트의 브라우저로 가져와야합니까? –

4

지금은 SSL을 관리하는 역방향 프록시가 필요합니다. 이 문제를 논의한 ticketthread이 있습니다.

+0

도움을 주셔서 감사합니다 ~ 유익한 읽기, 내가 계속 문제를보고 ~ ~ – Chris

0

한 가지는 우리의 SSL, 다음 설정에서 SSL 전송 (HTTP를 처리하기 위해 AWS ELB를 사용하는 것이 었습니다 - > HTTPS)를 재생 필터를 사용합니다. 가장 큰 장점은 서버에서 SSL로드가 걸리므로 일부 솔루션이 지적한대로 Apache 또는 Nginx를 실행할 필요가 없습니다. https://stackoverflow.com/a/23646948/690164

나는 또한 내 블로그에 그것에 대해 좀 더 쓰기 : 나는 securesocial 3.0.3M을 사용하고 http://www.mentful.com/2014/05/25/play-framework-filter-for-aws-elastic-load-balancer-forward-http-to-https/

0

당신은 여기 내 대답을 볼 수 있습니다

. securesocial.conf에

securesocial.ssl = true 

을 입력해야합니다.

activator "run -Dhttps.port=9005" 

그런 다음 https://localhost:9005에 브라우저를 : 9443

이 로컬 테스트 HTTPS 유용

3

을 즐길 : 그런 다음 localhost로

JAVA_OPTS=-Dhttps.port=9443 activator run 

이동하여 SBT 또는 활성화를 다시 시작 .

관련 문제