2016-06-30 2 views
0

내 앱 중 하나가 API 서버에 연결할 수 없습니다. 기록 된 이유는 NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)입니다. 지금까지 왜 또는 무엇이 가장 실망 스러운지를 찾는 데는 아무런 운이 없었습니다.이 문제는 일부 테스트 장치에 나타납니다. 다른 모든 것은 괜찮습니다. NSURLConnection:sendSynchronousRequest:returningResponse:error:을 사용하고 있지만 일부 리펙토링 및 NSURLSessionDataTask:dataTaskWithRequest:completionHandler:을 시도한 후에도 문제가 계속 발생합니다. 또한NSURLSession/NSURLConnection HTTP로드 실패 (kCFStreamErrorDomainSSL, -9813) 모든 iPhone에 오류가 있습니까?

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler 
{ 
    completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]); 
} 

여전히 아무것도 .....

추신 추가 내 첫 번째 문제는 다른 많은 문제가 있지만 내 주요 관심사는이 오류가 설정 -> 일반 -> 재설정 후에도 정상적으로 작동하는 하나의 테스트 장치에만 나타나는 이유입니다.하지만 Apple에 알려주는 방법은 다음과 같습니다. 테스트 장치 "?). 다른 작품은 완벽하게 괜찮습니다.

+0

가능한 복제 [CFNetwork에서 SSLHandshake가 아이폰 OS를 실패 9] (http://stackoverflow.com/questions/30720813/cfnetwork-sslhandshake -failed-ios-9) – FelixSFD

+0

@FelixSFD, 내 편집을 확인할 수 있습니다 :) – user3352185

답변

0

오류 -9813은 errSSLNoRootCert입니다. 즉, 서버에서 제공하는 인증서 체인이 신뢰할 수있는 루트 (앵커) 인증서에 도달하지 못하고 체인에 인증서가 없기 때문에 발생합니다.

일부 장치는 누락 된 인증서 (OCSP?)를 성공적으로 가져올 수 있기 때문에 일부 장치는 다른 장치에 존재하지 않는 추가 신뢰할 수있는 앵커 인증서가 있기 때문에있을 수 있습니다 이유 또는 체인의 일부 인증서가 더 이상 iOS 9에서 허용되지 않아 무시되는 키 서명 알고리즘을 사용하여 서명 되었기 때문입니다.

TLS 인증서 공급 업체에 연락하여 TLS 체인 파일의 새 복사본을 얻은 다음 서버에서 체인 파일을 업데이트하고 서버를 다시 시작하여 문제가 없는지 확인하는 것이 좋습니다.

그래도 도움이되지 않는다면 문제의 호스트에 대해 openssl s_client -connect yourhostname:443을 실행 한 결과와 함께 테스트 할 수있는 URL로 질문을 수정하십시오. 여기

더 많은 정보 :의

관련 문제