2013-02-23 1 views
3

나는이 설정이 : (clientAuth = TRUE) SSL 클라이언트 인증서 인증을 사용하도록 구성NSURLConnection은 장치의 프로파일에 설치된 클라이언트 인증서를 사용할 수 있습니까?

  1. Tomcat 서버를
  2. .p12 인 파일을 볼 수로 이메일에 설치된 유효한 클라이언트 인증서 (와 아이 패드 프로필 아래)

ios safari를 통해 탐색 할 때 ipad는 클라이언트 인증서를 사용하고 서버에 대해 인증을합니다.

그러나 코드에서 NSURLConnection을 사용하면 연결되지 않습니다. 서버에서의 디버깅은 클라이언트가 보내는 것과 인증서를 전혀 보여주지 않습니다.

Request(https://192.168.1.5:8443/device/security/policy>, 0, 0)) didFailWithError:Error Domain=NSURLErrorDomain Code=-1205 "The server “192.168.1.5” did not accept the certificate." UserInfo=0xe2eae30 
{NSErrorFailingURLStringKey=https://192.168.1.5:8443/device/security/policy>, NSErrorFailingURLKey=https://192.168.1.5:8443/device/security/policy>, NSLocalizedDescription=The server “192.168.1.5” did not accept the certificate., 
NSUnderlyingError=0xe2eb250 "The server “192.168.1.5” did not accept the certificate.", NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0xe6ab010>} 

나는 내가 NSURLAuthenticationMethodClientCertificate 보호 공간에 대한 도전에 대한 대리자 메서드를 구현할 수 이해하지만, 내가 할 경우 내가 보낼 수있는 인증서가 해달라고 : 클라이언트에

나는 다음과 같은 오류가 발생합니다 , 장치에 설치되어 있고 코드를 통해 액세스 할 수 없습니다. (그게 무엇입니까?) [challenge.sender performDefaultHandlingForAuthenticationChallenge : challenge]를 호출했지만 아무런 효과가없는 것으로 보입니다.

NSURLConnection이 사파리 당 동작하고 설치된 인증서에 액세스 할 것으로 예상했지만 표시되지 않았습니다. 내가 어떻게 든 내 애플 리케이션에 인증서를 설치하고 싶지 않아요 - 그 무엇 인증서 관리 내장에 대한이야!

아니면 뭔가 빠졌습니까? 어떤 도움을 주셔서 감사합니다.

+0

이것 좀 봐 http://vanjakom.wordpress.com/2011/10/23/https-client-for-ios/ –

+0

좋은 소식이지만, 내가 뭘 하려는지는 인증서를 수동으로 앱 번들 밖으로 가져옵니다. 대신 OS 레벨에서 장치에 설치된 인증서를 사용하고 싶습니다. –

+0

이 문제에 대한 해결책을 찾았습니까? 현재이 정확한 시나리오를 조사 중입니다. – Yanik

답변

0

기본적으로 iOS (iOS 8 기준)의 앱에서 전역 설치된 인증서를 가져올 수 없으며 운영 체제는 NSURLConnection을 사용하여 인증서를 전송하여 도움을받지 않습니다. Safari는 인증서에 액세스 할 수있는 특별한 권한이 있습니다. 따라서 앱에서 사용하는 유일한 방법은 앱에 앱을 설치하는 것입니다. 이로 인해 모든 일이 어려워집니다.