NSURLREQUEST의 개인 "SetAllOwsAnyHttpScertificate : Forhost :"에 대한 대안 방법 :?
-
18-09-2019 - |
문제
내 iPhone 응용 프로그램은 (매우 안전한 것처럼 보이는) 개인 방법을 사용하기 위해서만 거부되었습니다. +setAllowsAnyHTTPSCertificate:forHost:
~을 위한 NSURLRequest
. 이 기능을 모방 할 비 개인적인 API가 있습니까?
해결책
그것에 대한 공개 API가있는 것 같습니다;)신뢰할 수없는 인증서를 위해 NSURLConnection을 사용하여 SSL과 연결하는 방법은 무엇입니까?
다른 팁
실제로 10.6.8로 테스트하고 있으며이 코드는 여전히 작동합니다. 개인 API를 사용하고 있지만 선택기가 존재하는지 확인하고 있습니다 (MyUrl은 WebView 또는 NSURLConnection에로드하려는 NSURL입니다).
SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ( [NSURLRequest respondsToSelector: selx] )
{
IMP fp;
fp = [NSURLRequest methodForSelector:selx];
(fp)([NSURLRequest class], selx, YES, [myurl host]);
}
"@Selector"는 사용되지 않았으므로 모두 작업은 런타임에 수행됩니다. 그것은 특히 끈을 모호하게하는 경우 Apple의 수표에 숨겨져있는 안전하고 숨겨진 것으로 만듭니다.
정말 어리석은 해결 방법 중 하나는 자신의 카테고리 방법을 만드는 것입니다.
@implementation NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
이것은 Apple의 개인 API 수표에 의해 얻어야하지만 여전히 같은 것이 었습니다 (언제라도 휴식을 취할 수있는 개인적이고 문서화되지 않은 API [1]를 사용). 실제로 호스트뿐만 아니라 모든 것을 허용하기 때문에 더 나쁩니다.
1] : 개인 API ~해야 한다 그럼에도 불구하고 공개적이지만 개인 API.
setAllowsanyhttpScertificate는 이제 OS X 10.6.6에 모두지지되지 않은 것 같습니다.
내가 10.6.6이라고 말 했나요? 아마도 나는 "스노우 비스타"라고 말했을 것입니다.
해결책이 아니라 제안. 사용에 대해 생각 했습니까? Asihttprequest 프레임 워크 이것을 위해? 이 프레임 워크는 모든 측면에서 완료됩니다. 문서를 확인하십시오. 어쩌면 도움이 될 수 있습니다.