2011-01-14 4 views
6

사이트 (특정 URL)의 일부만 클라이언트 인증서가 필요한 HTTPS 사이트에서 Jetty에서 서블릿을 실행하고 싶습니다. 예를 들어 요청을 한 후 클라이언트 인증서 나는 <Directory> 또는 SSL 연결을 협상하기 위해 아파치를 강제 <Location> 내부 SSLVerifyClient require을 지정하여이 작업을 수행 할 수 있습니다 아파치에서Jetty는 URL로 SSL 클라이언트 인증서가 필요합니다.

필요 -

https://example.com/someservlet/public

는 - 아니 클라이언트 인증서는 https://example.com/someservlet/protected가 필요하지 않음 .

독립 실행 형 Jetty를 실행하고 싶지 않습니다. 이것이 가능한가? 서블릿이 이것을 어떻게 든 직접 만들 수 있습니까? 구성을 통해 수행 할 수 있습니까?

답변

3

내가 아는 한 포트 단위로만 SSL 옵션을 지정할 수 있습니다.

보안 취약점으로 약 1 년 전에 변경된 SSLRenegotiation이 필요하기 때문에 달성하려는 구성이 문제가 될 수 있습니다. 따라서 SSLRenogitiation을 수행하는 새로운 방법은 최신 클라이언트에서만 지원되며 지원되는 경우에도 버그로 인해 작동하지 않습니다.

간편한 해결 방법 : Jetty가 두 SSL 포트 (예 : )에서 수신 대기하도록 구성합니다. 예를 들어 HTTPS 클라이언트 인증이없는 443과 HTTPS 클라이언트 인증이 필요한 8443에 필요합니다. 그런 다음 보호 된 서블릿을 8443에서만 사용할 수있게하십시오. 이것은 좋은 솔루션은 아니지만 100 % 강력하며 Jetty 및 모든 클라이언트와 함께 작동합니다.

+1

제 환경에서는 모든 클라이언트와 서버를 업데이트해야합니다 (문제가 발생하는 동안 몇 주간 재미있었습니다). 또한 비표준 포트를 사용하는 것은 다양한 방화벽을 통해 허용되지 않습니다. 몇 달 후 – user63599

+0

사람은 단일 포트에서 작동하는 솔루션을 알고 있습니까? –

관련 문제