2010-12-11 6 views
3

kCFStreamPropertySSLSettings 사전에 일반적인 kCFStreamSSLValidatesCertificateChain, kCFStreamSSLAllowsAnyRoot 등을 추가하여 서버 & 클라이언트 인증 작업을 할 수 있습니다.iOS - SSL 연결에서 신뢰할 수있는 루트 관리

그러나 나는 이것이 더 세밀하게 어떻게 얻어 질 수 있는지를 보지 못한다; 즉

  1. 본 적이없는 서버/CA의 인증서를 검색하고 사용자에게 승인을 에스컬레이션합니다.
  2. 내가 좁은 신뢰 목록 (예 : 이전 연결 중에 알게 된 인증서)에 연결되어있는 서버의 인증서를 확인합니다.

.l.e. 내가 무엇을 찾고 있는데요? 1) MacOSX의 SSLSetTrustedRoots()와 2) kCFStreamErrorDomainSSL (예 : errSSLPeerCertUnknown)의 오류/도메인 콜백과 같은 것입니다. ipad/iphone 4.2.1에서 정의 된/액세스 할 수없는 것 같습니다.

아니면 뭔가 빠졌습니까? 아니면 콜백에 명시 적으로해야 할 일이 있습니까? 예를 들자면 (AdvancedURLConnections 예제는 적절하지 않습니다. 원시 (IRC) 소켓이 있습니다.)

감사합니다.

Dw.

답변

1

kCFStreamSSLValidatesCertificateChain을 kBooleanFalse로 설정하고 API로 인증서를 수동으로 확인하십시오.

특히,이

SecTrustSetAnchorCertificates 

를 사용하고 마지막으로 호출 할 수 있습니다, 당신은 그런

CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates); 

에서 얻을 인증서와

SecTrustCreateWithCertificates 

를 사용

SecTrustEvaluate 
+0

히스 - 샘플 코드가 있습니까? 언급 된 기능에는 Apple 샘플 (사이트에 있음)이 포함되어 있지 않으며 Graham Lee는 Coca Application Security에서 다루지 않습니다. 앨리스가 토끼의 구멍에 쓰러져있는 것처럼 느껴집니다. – jww

+0

제목에 대한 내 블로그 게시물을 확인하십시오. 여기에는 이러한 문제 중 일부가 포함됩니다. https://blog.asolutions.com/2011/02/using-tls-with-self-signed-certificates-or-custom-root-certificates-in-ios/ –

+0

https : // github에서 샘플 코드 .com/dirkx/Security-Pinning-by-CA –

관련 문제