2016-05-31 5 views
1

우리는 최근 독립형 Tomcat 8 컨테이너를 사용하는 것으로부터 내장 된 Tomcat 8 컨테이너를 사용하도록 변경했습니다. 우리는 SSL을 임베디드 컨테이너로 Grails 3.1.6에서 작동시키는 데 어려움을 겪고 있습니다. 우리는 standalone 컨테이너로 APR 네이티브 라이브러리와 함께 certificateFile 접근법을 사용 해왔다. 우리는 키 스토어 방식으로 변경하는 대신 임베디드 Tomcat으로이 접근 방식을 유지하고자합니다. 나는 Grails 문서를 보았고 스프링 부트 내장 컨테이너 문서에 깊이 들어가 보았지만 아직 해결 방법을 찾지 못했습니다.Grails 3.1.6+에서 SSL을 설정하는 방법은 무엇입니까?

application.yml에서 여러 가지 구성 방법을 시도했습니다. 등 문서의 여러 다른 조각, 소스를 기반으로 내 최신 시도했다 :

나는 또한 application.yml의 끝이를 추가하는 시도
environments: 
    test: 
    grails: 
     server: 
      port: 8443 
      ssl: 
       enabled: true 
      certificateKeyFile: '/usr/share/app/my_domain_net.key' 
      certificateFile: '/usr/share/app/my_domain_net.crt' 
      certificateChainFile: '/usr/share/app/myCA.crt' 
     serverURL: "https://test.mydomain.net:8443" 
     tomcat: 
      port: 8443 
      ssl: 
       enabled: true 
      certificateKeyFile: '/usr/share/app/my_domain_net.key' 
      certificateFile: '/usr/share/app/my_domain_net.crt' 
      certificateChainFile: '/usr/share/app/myCA.crt' 

:

server: 
    port: 8443 
    ssl: 
     enabled: true 
    certificateKeyFile: '/usr/share/app/my_domain_net.key' 
    certificateFile: '/usr/share/app/my_domain_net.crt' 
    certificateChainFile: '/usr/share/app/myCA.crt' 

는하지만이 나에게 준 '리소스 위치가 null이 아닐 수도 있습니다'오류가 발생했습니다. 내가 보는 대부분의 예제와 질문은이 시점에서 꽤 오래된 것입니다. stackoverflow에 대한 신선한 질문을 할 시간. 미리 감사드립니다!

답변

2

LD_LIBRARY_PATH에로드 된 APR 기본 라이브러리가있는 경우에도 openssl certificateKeyFile 접근 방식을 사용할 수 없었습니다. (당신이 grails-app/init/myapp/Application.groovy를 편집하고 추가 커넥터 추가를 위해 스프링 설명서를 따른다면 (단락 70.9에서 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html), 이것은 어려울 수 있습니다. org.springframework 소스를 사용하여 openssl 인증서 및 APR Native에서이 작업을 수행하는 방법을 알아 냈습니다.) 필자에게 가치있는 것은 아니므로 여기에 키 저장소 방식을 사용하는 방법이 있습니다.

Tomcat keytool 메서드를 사용하여 인증서를 다시 입력해야했습니다.

다음, application.yml는 다음과 같이 업데이트되었습니다 :

--- 
--- 
environments: 
    development: 
     server: 
      port: 8080 
      ssl: 
       enabled: false 
     grails: 
      serverURL: "http://localhost:8080" 

--- 
--- 
environments: 
    test: 
     server: 
      port: 8443 
      ssl: 
       enabled: true 
      key-store: classpath:my_domain_net.jks 
      key-store-password: mypassword 
      key-password: mypassword 
     grails: 
      serverURL: "https://test.mydomain.net:8443" 

인증서를 준비에 대한 나의 과정이었다

1) create a directory for ssl_certificates 
2) pick a Certificate Authority (I chose DigiCert) 
3) use the CA's instructions for generating a csr for Tomcat:keytool 
4) the CA's keytool command asks for a keystore password and key password 
5) submit the csr and wait ~10 minutes for the cert to be issued 
6) download the issued certificate as my_domain_net.p7b into the 
    ssl_certificates folder created above 
7) keytool -import -trustcacerts -alias server -file my_domain_net.p7b \ 
     -keystore my_domain_net 
8) copy my_domain_net.jks into src/main/resources/ of your web project. 
+0

이어야합니다 편집 이후 코멘트 '로 추가 6 개 이상 문자 '. 'key-store','keystore-password','key-password' 속성은'ssl' 섹션에 들여 쓰기해야합니다. 이것을 알아 내려고 노력하면서 좋은 시간을 보냈습니다. – CoconutBandit