내 앱에서 SSL 고정을 시도하고 있습니다. 모든 가이드 후에 나는 이것을 얻었다 :
AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
policy.allowInvalidCertificates = YES;
NSData *localCertificate = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"my" ofType:@"cer"]];
policy.pinnedCertificates = [[NSSet alloc] initWithObjects:localCertificate, nil];
self.securityPolicy = policy;
"self"는 AFHTTPSessionManager의 하위 클래스입니다.
두 서버에서 이것을 테스트했습니다. 제 서버 my.cer 갖고, 좀 요청을 할 경우에있어서 URLSession:didReceiveChallenge:completionHandler
의이 AFURLSessionManager
호출된다. 그런 다음 인증서가 비교되고 모든 것이 정상입니다.
두 번째 서버에는 my.cer가 없습니다. 내가 요청 URLSession:didReceiveChallenge:completionHandler
을 AFURLSessionManager
하지 않으면 전화를 걸지 않고 сertificate 확인이 일어나지 않지만 요청을하고 응답을받을 수 있습니다.
서버에서 인증서를받지 못한 경우 요청을 취소 할 수 있습니까?
감사!
적어도 몇 가지 정보를 검색하는 과정에서 토론을 보았고 info.plist의 NSAllowsArbitraryLoads 비트가 원인임을 발견했습니다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
이것을 삭제하면 도움이되었습니다. 희망, 이것은 다른 사람을 도울 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다