2010-07-01 2 views
3

사용자가 서버에 요청을 보낼 때 클라이언트 인증서를 가져 오는 작업을하고 있습니다. 인증서를 가져 와서 인증서에서 사용자 이름, 사용자의 전자 메일 주소 및 사용자의 회사 이름 등 3 가지 정보를 얻어야합니다.얼마나 많은 형식의 x.509 클라이언트 인증서 파일이 있습니까?

처음에는 사용자 이름에 대해 "Subject CN", 전자 메일 주소에 "Subject E", 회사 이름에 "subject OU"를 얻는 것이 매우 간단 해 보입니다.

하지만 나중에 다른 CA와 도구가 많이 있다는 사실을 깨닫고 다른 형식으로 인증서를 발급합니다. 예를 들어, 일부 인증서는 "제목"필드에 전자 메일 주소 필드를 전혀 가지고 있지 않지만 SubjectAlternativeName 확장에 저장하고 사용자 이름은 "제목 O"에 저장하고 일부 인증서는 "제목 CN"필드에 전자 메일을 저장합니다. 회사의 URL 주소와 함께

나는 사용자 이름, 회사 이름 및 이메일 주소를 확실히 찾을 수있는 방법이 있는지 궁금합니다. 그렇지 않은 경우 인증서 형식에 대한 표준이 존재하여 이러한 정보가 여러 위치에 저장되거나 인증서의 모든 필드에 방금 생성됩니다.

마지막 질문은 웹 사이트에서 "모든"CA의 클라이언트 인증서를 지원하는 경우 몇 개의 CA를 말하고있는 것입니까? 이 시나리오가 일반적입니까, 아니면 대부분의 웹 사이트가 단지 선택한 1-2 개의 CA를 지원합니까?

답장을 보내 주셔서 감사합니다. 머리 속에 너무 많은 질문이 생깁니다.

답변

7

주체 고유 이름 (주체 DN)은 RDN (Relative Distinguished Name)의 정렬 된 시퀀스이며 각 RDN은 AVA (Attribute Value Assertion)의 정렬되지 않은 집합입니다. AVA는 "CN = yourname"또는 "O = yourorganization"과 같습니다 (인증서에 저장되어 있지는 않지만).

대개의 경우 RDN 당 하나의 AVA 만 있으므로 이상한 경우가 아니면 주제 DN의 CN RDN (예 : '필드'라고도합니다. 너무 구체적 일 필요는 없습니다.) 제목 DN을 읽을 수있는 문자열, 특히 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽으로 serialize하는 데 대한 여러 표준이 있습니다. E= v.s. emailAddress= 또는 코마 또는 슬래시 구분 기호. 먼저 도구가 문자열 표현이 아닌 OID (Object Identifier)에서 읽을 수 있는지 확인해야합니다.

시퀀스는 국가, 조직, 조직 단위, 공통 이름 및 전자 메일 일 것입니다. 전자 메일 주소는 항상 문제가됩니다 (같은 전자 메일 주소에서 항상 한 번 직렬화되는 것은 아니기 때문에). 방법은 사용 된 표준에 따라 다름).

일반적으로 CA는 주체 DN의 구조 및 주체 대체 이름 확장명 사용 여부에 관계없이 원하는대로 자유롭게 수행 할 수 있습니다. 이러한 것들은 각 CA 정책 (상당히 긴 기술 및 법률 문서 일 수 있음)에 의해 규제되는 경향이 있습니다. 이 도메인에 맞는 크기는 없습니다.

클라이언트 인증서를 수락하기 전에 정책에 동의하는지 확인해야합니다. 일단 CA 인증서를 신뢰하면, PKI 모델은 그 이후로 세밀한 선택을하기가 어렵습니다.

신뢰할 수있는 CA 목록은 플랫폼 및 구성에 따라 다릅니다. 기본적으로 OSX의 자바는 트러스트 스토어에 약 150 개의 CA 인증서를 가지고 있으며 다른 플랫폼에서는 약 70 개 정도의 CA 인증서가 있다고 생각합니다. 이 숫자는 크게 다를 수 있습니다.

어쨌든 클라이언트 인증서를 수락하려면 어느 곳에서 왔는지 알아야 할 필요가 있습니다. 따라서 신뢰할 수있는 CA의 작은 하위 집합을 갖게됩니다. 주의 깊게 수동 선택 (정책 문서를 기반으로) 한 후에 클라이언트 인증서 인증을 위해 신뢰할 수있는 CA를 구성하는 것이 좋습니다.

실제로 클라이언트가 임의의 서버에 무작위로 인증서를 보내는 이유는 확실하지 않습니다. 클라이언트 인증서 용 PKI는 폐쇄 된 관리 도메인에서 또는 잘 설정된 페더레이션 내에서 더 잘 작동하는 경향이 있습니다.이 경우 사용자와 사용자는 해당 조직에 속할 것이며 어떤 CA를 예상 할 것인지 알 수 있습니다. 또한 LDAP 서버와 같은 다른 곳에서 추가 속성을 가져 오는 동안 사용자를 인증하기 위해 클라이언트 인증서 사용을 제한하는 것이 좋습니다. 일반적으로 클라이언트 인증서는 1 년 이상 개인에게 방출되지만 개인 (심지어 조직 구성 단위)에 대한 정보는 실제로 변경 될 수 있습니다. CA를 사용하거나 자신의 CA를 설정하려면이 모든 것을 고려해야합니다.

+0

대단히 감사합니다. 완벽한 답변입니다. – mazhanshan

관련 문제