문제

Apache 뒤에있는 Tomcat에서 SSL을 사용하는 데 약간의 문제가 있습니다. 나는 아침 내내 Google을 사용하여 좋은 솔루션을 찾으려고 노력했지만 지금까지는 아무것도 없습니다.

내 SSL VirtualHost 구성의 일부로

<Location /MyApp/>
  ProxyPass http://localhost:8080/MyApp/
</Location>

이것은 대부분의 경우에 잘 작동하지만 성공적인 로그인 후 J_SECURITY_CHECK https://mysite.com/myapp, HTTP 페이지로 리디렉션합니다 http://mysite.com/myapp/secret.html HTTPS 페이지로 남겨 두는 대신 https://mysite.com/myapp/secret.html. 기밀이 아닌 로그인 일뿐 만 아니라 전송되는 데이터이므로 HTTPS를 유지해야합니다. 응용 프로그램의 보안 관리인에 추가 할 때

<user-data-constraint>
  <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>

그것은 방향을 바꿉니다 https://mysite.com:8443/myapp/secret.html. Server.xml은 8443으로 SSL이 구성되어 있기 때문에 8443으로 리디렉션되지만 Apache를 통해 프록시되므로 실제로 443이어야합니다.

나는 proxypassreverse가 없다는 것을 알고 있지만 Apache 구성 파일의 섹션 내에 추가 할 수있는 것은 아닙니다.

J_SECURITY_CHECK를 어떻게 상대적으로 리디렉션하도록하거나 (따라서 HTTPS를 HTTP로 변경하지 않음) 8443 대신 443으로 리디렉션 할 수 있습니까? Tomcat 또는 Apache의 Mod_proxy를 통해 시행 해야하는 것입니까?

건배

도움이 되었습니까?

해결책

Tomcat을 설정하여 설정을 위해 SSL로 리디렉션을 수행 할 수는 없습니다. 스스로 리디렉션을 수행하려면 필터를 작성해야합니다.

특정 설정의 경우 이와 같은 리디렉션 포트를 추가하면 작동 할 수 있습니다.

<Connector ... port="8080" redirectPort="443"/>

HTTPS 커넥터를 제거하십시오. 리디렉션 포트 및 HTTPS 커넥터가 모두있을 때 일부 버전의 Tomcat을 혼동 할 수 있습니다. 어쨌든 사람들이 HTTPS 포트에 액세스하는 것을 원하지 않는 것 같습니다.

이것은 같은 기계에 Apache와 Tomcat이있을 때만 작동합니다. 생산 환경에서는 그렇지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top