2011-02-24 5 views
4

고유 이름을 표시하고 EV 인증서인지 확인하기 위해 ssl 인증서 (가능한 경우 체인)를 가져올 수 있기를 바랍니다. (인증서 정책 (wikipedia) 나는 인증서가 자체 서명 된 경우에만 일부 인증서 세부되게 얻을 무엇을 본 적이에서iOS에서 ssl 서버 인증서를 검색하는 방법은 무엇입니까?

를 통해 EV 인증서에서의 검출.

은 검색 CFNetwork에서 같은 하위 계층을 사용 가능 인증서 (들)?

답변

9
macnetworkprog.lists.apple.com 메일 링리스트 http://web.archiveorange.com/archive/v/x0fiWEI9emJFc36DY0UP를 통해

및 개발자 포럼에서 몇 군데를 언급

음, 기본 TLS 보안 정책이 충분해야하지만, 경우이 과정은 그렇게 할 수 있습니다에 참여하려면 ( 3.0 이상 아이폰 OS에, 및 Mac OS X 10.6)으로는 -connection:canAuthenticateAgainstProtectionSpace: 및 를 구현 -connection:didReceiveAuthenticationChallenge: 대리인 콜백 NSURLAuthenticationMethodServerTrust 인증 메서드를 찾고 있습니다.

이 작업을 수행하려면

  1. -connection:canAuthenticateAgainstProtectionSpace: 대리인 콜백을 구현합니다.

    2A 다음 보호 공간의 인증 방법이 NSURLAuthenticationMethodServerTrust 경우 구현에

  2. 는, 당신은 두 가지 선택이있다. NO을 반환하고 기본 TLS 알고리즘을 실행하십시오.

    2b. YES을 반환하십시오.이 경우 귀하의 -connection:didReceiveAuthenticationChallenge: 대리인 콜백이 호출됩니다.

당신은 당신이 결정, 당신은 를 얻기 위해 SecTrust의 API를 사용하여 다음 신뢰 객체를 가져 에 보호 공간 객체에 -serverTrust를 호출 할 수 있는지 확인하기 전에 인증서를보고 싶다면 인증서 체인.

  1. 경로 2b를 사용하면 -connection:didReceiveAuthenticationChallenge: 대리인 콜백이 호출됩니다. 두 가지 선택이 있습니다 :

    3a. 챌린지의 보낸 사람에게 -cancelAuthenticationChallenge:을 호출하여 연결을 허용하지 않습니다.

    3b. 챌린지의 발신자에게 -useCredential:forAuthenticationChallenge:로 전화하여 연결을 허용하십시오. 자격증 명을 얻으려면 -[NSURLCredential initWithTrust:]으로 전화하십시오. 여기에 전달하는 신뢰 객체는 실제로 중요하지 않습니다. 보호 공간에있는 것이 할 것입니다.

이 작업을 동 기적으로 수행 할 필요는 없습니다. 챌린지를 래치하고 대리인 콜백에서 돌아와서 나중에 어느 시점에 챌린지를 해결할 수 있습니다.