2013-05-12 3 views
0

저는 스프링 보안을 X.509 preauthentication으로 사용하고 있습니다. 클라이언트가 HTTP의 요청에 따라 인증서를 전송 있는지 확인하려면X509 인증서를 HTTP 요청에 넣기

, 그것이 필요하다 :

  • 수정의 pom.xml이 true<wantClientAuth><needClientAuth>을 설정
  • 설정 아파치의 SSLVerifyClientrequirereference

읽기에 따라 웹 서버는 클라이언트가 클라이언트에게 실제로 인증서를 보내도록 인증서를 보내도록 클라이언트 측에 지시해야합니다. 이를 달성하기 위해 스프링 보안과 아파치 설정이 필요하다면 혼란 스럽다.

+0

나는이 세션을 통해'ActivClient's' (스마트 카드 소프트웨어) 설정을 편집하여 클라이언트 세션을 HTTP 세션에 포함시켰다. (http://stackoverflow.com/questions/13808630/request-getattributejavax-servlet-request-x509certificate-returns -null), 그러나 세션 **에서 클라이언트 인증서를 볼 수도 있습니다 **. –

답변

1

스프링 보안 구성은 클라이언트가 인증서를 보내는 지 여부와 아무 관련이 없습니다. 이는 SSL 프로토콜 수준에서 결정되며 따라서 클라이언트와 서버 간의 협상에 의해 결정됩니다. 귀하의 질문은 귀하의 시스템 설정 방법을 설명하지 않고 Maven Pom과 Apache 구성을 참조한다는 점에서 약간 명확하지 않습니다. 아파치 서버가있는 maven Jetty 플러그인을 실행하고 있습니까?

SSL 연결이 서블릿 컨테이너에서 종료되지 않으면 Spring Security의 X.509 인증이 작동하지 않습니다. 따라서 클라이언트와 Apache 사이에 HTTPS가 있고 Apache에서 서블릿 컨테이너까지 비 SSL 연결 인 경우 클라이언트 인증서를 일반적으로 사용할 수 없습니다.

AJP 커넥터를 사용하는 경우 ExportCertData 옵션을 사용하여 인증서를 백 엔드에 전달하도록 Apache를 구성 할 수 있습니다. 그렇지 않은 경우에도 내 보낸 인증서를 가져 와서 요청 헤더로 전달할 수 있습니다 (이 예는 SO의 다른 위치에서 찾을 수 있습니다). 디폴트로 사용하는 표준 자바 프로퍼티 이름이 아닌 헤더에서 인증서를 추출하기 위해 스프링 시큐리티 X.509 코드를 커스터마이즈 할 필요가있다.

+0

'session.getAttributeNames()'를 로깅 할 때'SSL_CLIENT_CERT'가 나타나야합니까? 로그를 검토 한 결과,'javax.servlet.request.X509Certificate' 속성 만 보았지만'SSL_CLIENT_CERT' 속성은 보지 못했습니다. 아마도 구체적으로 검색해야 할 필요가 있을까요? –

+1

SSL_CLIENT_CERT는 Apache 내에서만 적용됩니다. javax.servlet.request.X509Certificate가 설정되어 있으면 문제가 없어야합니다. 내가 말했듯이, 당신의 질문에 당신의 셋업이 무엇인지, 그리고 그 문제가 무엇인지 분명히해야합니다. 그렇지 않으면 대답하기가 어렵습니다. –

관련 문제