2012-04-06 2 views
9

뒤에 나는 모든 곳에서 찾고있다하지만, 다음과 같은 상황에 대한 명확한 솔루션을 찾을 수 없습니다 :톰캣 아파치와 SSL

우리는 웹 응용 프로그램이을 (Grails는 + 봄 보안) 아파치 뒤에, 바람둥이에서 실행됩니다. 애플리케이션의 부분은 https에서 실행되어야하므로 스프링 보안 채널 보안을 사용하여 안전한 애플리케이션 부분으로 이동할 때마다 Spring은 302 상태 코드로 https로 리디렉션합니다.

은 이제 바람둥이은 HTTPS 및 인증서에 대해 알고 설정, 그래서 그것은 SSL을 처리하는 방법을 알고있다. 실제로 URL과 포트로 직접 가서 tomcat을 직접 방문하여 사이드 스텝핑 아파치를 사용하면 모든 것이 100 % 작동합니다.

바람둥이 앞에서 아파치를 넣을 때 문제가 발생합니다. 우리가 현재 가지고있는 아파치 설정은 애플리케이션의 안전하지 않은 부분에 대해 잘 작동합니다. mod_jk를 사용하여 아파치와 톰캣을 프록시 처리합니다.

그러나, 응용 프로그램의 보안 부분으로 이동하려고으로, 봄이 리디렉션됩니다 즉시, 그것은 아파치 설정의

<VirtualHost _default_:443> ... </VirtualHost> 

부분을 칠 것입니다 ... 그리고 이것은 곳입니다 문제가 시작됩니다.

내가 읽은 내용에서

, 그것은 바람둥이에 처리 SSL을 통과, 또한 mod_jk를 통해, 아파치 수 있습니다. 그러나 우리는이 설정을 올바르게 할 수없는 것처럼 보입니다. tomcat은 SSL 용으로 이미 설정되어 있으므로 인증서가있는 위치를 알고 있고 Spring Security가 설정되어 있으므로 tomcat이 모든 SSL을 처리하도록하고 apache는 tomcat으로 전달하기 만하면됩니다.

이 모든 것이 가능합니까, 아니면 누락 되었습니까? 누구나 이것을 설정하는 방법에 대한 명확한 지시가 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.

우리는 아파치 2.2 tomat 7.0.27

감사

답변

5

그냥 아파치에서 톰캣에 SSL/TLS 트래픽을 중계 수를 사용하고 있습니다. Apache에서 SSL 연결이 끝나면 트래픽을 Tomcat으로 리버스 프록시해야합니다 (이 경우 SSL은 거의 유용하지 않음). 또는 클라이언트를 직접 Tomcat에 연결하고 SSL 연결을 처리하게합니다. 당신이 mod_jk 톰캣에 SSL 연결 자체에 전달할 수 있다는 읽은 곳

는 잘 모르겠어요. 소켓을 직접 릴레이해야하므로 mod_jk (사용 된 AJP 프로토콜을 우회하는 방식으로 mod_proxy_ajp이 새로운 방법이거나 심지어 mod_proxy_http)입니다.

난 당신이 Tomcat이 어쨌든 SSL 요청을 처리 할 경우 아파치 톰캣 앞에되고 싶은 이유를 모르겠어요. 포트 번호 또는 이와 관련이있는 경우 방화벽 규칙을 사용하여 포트 443을 Tomcat 포트로 전달합니다. they only happen after the initial HTTP request has been made :

는 또한, HTTPS에 HTTP에서 이러한 자동 리디렉션을 수행하는 방법에 대한주의. 게시물에서

+1

동의합니다. 특히 mod_proxy_ * 포인트에 대해서. SSL을 처리하는 Apache를 사용하고 요청을 Tomcat에 전달하기 위해 mod_proxy_http를 사용합니다. 훌륭하게 작동합니다. 그리고 아주 간단한 구성. – Gregg

0

, 난 당신이 응용 프로그램 HTTP를 통해 당신의 특정 부분이 있기 때문에, 아파치 여부를 작동 SSL을 가져 오는 동안이 문제로 실행되고 있는지 여부를 말할 수 없다, 아파치는 결코 SSL을 통해 리디렉션합니다. ssl (사용자 -> Apache에서 ssl을, Apache -> tomcat에서 ssl을 의미 함)을 통해 여러 개의 "세그먼트"를 가질 수 있습니다.
1.문제가 ssl이 Apache에서 작동하도록하는 경우 - ssl이 Apache 끝에서 올바르게 설정되어 있는지 확인해야합니다.
2. 문제가 "리디렉션"인 경우 http 및 https에 대한 별도의 URL을 유지하십시오. /something.mysite.com/non_ssl/ 및 /something.mysite.com/ssl/과 같습니다. 이렇게하면 Apache에서 규칙을 쉽게 작성할 수 있습니다.