2012-05-28 4 views
5

C-land OpenSSL을 사용하여 X509 인증서의 도메인을 확인해야합니다.OpenSSL에서 인증서 도메인 확인

나의 이해는 라이브러리가 나는 대략 다음과 같은 알고리즘을 구현해야한다는 나를 위해이 작업을 수행하지 않는다는 것입니다

다음 subjectAlternativeName 확장의 dnsName 필드가 존재하는 경우

  1. 을 그에게 name 설정 값.
  2. 그렇지 않으면 name을 제목의 CN 필드로 설정하십시오.
  3. name을 요청한 호스트 이름과 비교하여 각 별표가 [A-Za-z0-9 _] +와 일치하지만 '도트'(.)는 허용하지 않습니다.

나는이 일을하기 위해 많은 코드가 있어야한다고 생각하지만 어떤 것도 발견하지 못했습니다.

누구든지이 예제를 찾을 수 있습니까? 아니면 내 알고리즘을 정상적으로 점검 할 수 있습니까?

편집 : 이것은 내가 생각해 낸 것입니다 : https://gist.github.com/2821083. OpenSSL이이 코드를 호출 코드로 남겨 두는 것이 이상하게 보입니다.

+1

cert에서 찾은 값을 기반으로 값을 "설정"하는 대신 다른 방법으로해야합니다. 예상되는 SAN DNS 항목이 일치하는지 확인하십시오. SAN 확장에 여러 개의 DNS 항목이있을 수 있기 때문입니다. (RFC 6125의 와일드 카드 매칭에 대한보다 정확한 규칙이 있습니다, btw.) – Bruno

답변

5

대체 이름과 원시 IP 주소 및 FQDN을주의해야하지만, 꽤 많은 부분이 있습니다. 당신은

BOOL SSL_X509_getIDs(apr_pool_t *p, X509 *x509, apr_array_header_t **ids) 

및 관련 친구들 http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_util_ssl.c에서 모든 옵션 (방법 서버 측입니다) ssl_engine_init.c에서 호출자

를 도용 할 수 있습니다.

openssl 콜백을 수행 할 때 - & 시간과 체인을 CTX에서 이미 제공하지 않은 경우 고려하십시오.

ww.

2

OpenSSL이이 코드를 호출 코드로 남겨 두는 것이 이상하게 보입니다.

예, 매우 많은 응용 프로그램이 수표를 수동으로 수행해야한다는 것을 인식하지 못하기 때문에 실제로 문제가 발생합니다.

OpenSSL 1.1.0에는 호스트 이름 확인 (HEAD (2012 년 9 월 현재))이 포함됩니다. 변경 로그에 따르면 -verify_name 옵션이 있고 스위치는 -verify_hostname 스위치에 응답합니다. 그러나 s_client은 어느 스위치에도 응답하지 않으므로 호스트 이름 검사가 구현되거나 클라이언트에 대해 호출되는 방법이 명확하지 않습니다.


subjectAlternativeName 연장 dnsName 필드는 해당 값에 현재 설정 이름 인 경우.

여러 주체 대체 이름 (SAN)이있을 수 있으므로 두 개 이상을 준비하십시오.

그렇지 않으면 제목을 제목의 CN 입력란에 설정하십시오.

나는 당신도 경기를 확인해야한다고 생각합니다.

각 별표 이 일치 할 수 있도록, 요청 된 호스트 이름에 대한 이름을 비교 [A-ZA-Z0-9 _] +,하지만 '점'(.).

훨씬 더 고통 스럽습니다. 또한 gTLD 또는 ccTLD와 일치하지 않는지 확인해야합니다. 예를 들어 gTLD *.com에 대해 발급 된 인증서는 필요하지 않습니다. 해당 인증서는 아마도 나쁜 사람이 발행 한 것입니다.)

ccTLD는 * .eu, * .us 또는 இலங்கை (nic.lk)와 같습니다. 약 5000 명 정도이며 모질라는 http://publicsuffix.org/에 목록을 제공합니다. 원시 목록은 https://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1입니다.


이 이렇게 주위 발로 코드의 많음이 될 것을 나에게 보인다,하지만 난 하나를 발견하지 않았습니다.

van Gulik의 제안 외에도 Curl을 사용해 볼 수도 있습니다. Curl에는 호스트 이름과 일치하는 코드가 포함되어 있습니다.


인증서가 제대로 구성되어 있는지 확인할 수도 있습니다. 웹 컨텍스트에서 책임이있는 그룹은 CA/브라우저 포럼입니다. https://www.cabforum.org/Baseline_Requirements_V1_1_6.pdf

  • 확장 유효성 검사 인증서 요구 사항, 기준 문서에서 https://www.cabforum.org/Guidelines_v1_4_3.pdf
  • , 당신은 발견 할 것이다, 예를 들어, IP,

    • 기준 인증서 요구 사항 : 그들은 생성 인증서에 대한 기본 및 확장 요구 사항이 공통 이름 (CN)으로 나열된 항목은 주체 대체 이름 (SAN)에도 나열되어야합니다.

      확장 된 문서에서 예약 된 IP (RFC 1918)는 확장 유효성 검사 (EV) 인증서에 존재할 수 없습니다. EV 인증서에는 와일드 카드가 포함될 수 없습니다.