2013-01-06 2 views
0

저는 스프링 보안을 사용하여 로그인 페이지를 작성하고 있습니다. 이 페이지는 사용자가 사용자 이름과 암호 대신 인증서를 사용할 수있는 옵션을 제공해야합니다. 그러나 다음과 같은 시나리오에 갇혀 있습니다 :x509 클라이언트 인증서 유효성 확인

브라우저에 설치된 XYZ 회사의 인증서가 있다고 가정 해보십시오. 이제 서버 (신뢰할 수있는 XYZ)는 인증서의 유효성을 검사하려고했지만 질문은 다음과 같습니다.

Q1. 브라우저가 "브라우저에 하나 이상의 인증서가 설치되어 있다고 가정 할 때"올바른 인증서 "를 제공하기 위해 브라우저가 어떻게 요청할 수 있습니까?

2. 사용자가 로그인 페이지에서 단추를 클릭 할 때만 인증서를 보낼 수있는 단추가있을 수 있습니까?

3. 서버가 인증서를 받았다고 말하면, 서버가 "네, 인증서 체인 (XYZ 회사가 서명 함)을 조사하여 자신이 누구라고 말했는지 증명할 수 있습니까?"라고 말할 수 있습니까?

감사, 보안 초보자 :

답변

2

이 가능에서

. 필요한 클라이언트 인증서가있는 SSL 사이트를 설정하기 만하면됩니다. 브라우저는 기본적으로 내부 인증서 저장소를 제공합니다. 즉, os의 사용자 인증서 저장소를 보여줍니다. ssl 연결에서 클라이언트 인증서 요구 사항을 설정하는 방법에 대해서는 서버 프레임 워크 문서를 참조하십시오.

q2의 경우 앱과 인증 제공자라는 두 개의 웹 사이트가있을 수 있습니다. 응용 프로그램에 버튼이 표시되고 클라이언트 인증서가 필요한 인증 공급자로 리디렉션됩니다. 그런 다음 인증 공급자는 모든 sso 프로토콜 (oauth2, saml)을 사용하여 사용자 ID를 응용 프로그램에 반환합니다.

인증서 유효성 확인과 관련하여 체인의 유효성을 검사하거나 서버 측 사용자 이름과 인증서 엄지 손가락 사이에 매핑을 지정할 수 있습니다.

+0

감사합니다. 의심의 여지가 없습니다. 이제는 구현에 이르러 신뢰할 수있는 CA가 서명 한 내 인증서를 내 보낸 후 내 이름과 루트 인증서 지문을 내 서버 측 신뢰할 수있는 CA와 수동으로 매핑하려고합니다. 어떻게 든 똑같은 지문을 찾을 수 없습니다. 제가 여기에 뭔가 빠졌습니까? (btw, 나는 브라우저에 설치된 CA와 ssl을 설정하려고합니다.) – sglai

+0

나는 사용자 certs 지문을 수동으로 매핑하려하지 않았습니다. 난 항상 rser 인증서가 Active Directory의 사용자 계정에 매핑되는 Windows Server에 내장 된 CA에 의존했습니다. 이 (물론 Windows 통합 인증 포함) 항상 예상대로 작동했습니다. –

관련 문제