오랜 질문에 대해 미리 사과드립니다. 자체 서명 된 SSL 인증서에 문제가있어 지금까지 시도한 모든 것을 문서화하려고합니다.아이폰 앱에서 자체 서명 된 SSL 인증서 사용
저는 REST 서비스와 통신하는 앱을 만들고 있습니다. 테스트 서버는 문제없이 컴퓨터에 설치할 수있는 자체 서명 된 SSL 인증서를 사용합니다. 설치하는 데 암호가 필요한 .p12 파일입니다. 이 인증서가 설치되어 있지 않으면 서버에 대한 모든 요청은 서버를 반환합니다. 403.
.p12는 "루트 인증 기관"인 "루트 인증 기관", "루트 인증 기관"에서 발급 한 "테스트 사용자"인증서 인 키 체인에 세 가지 항목을 설치합니다. , "테스트 사용자"인증서와 관련된 개인 키가 있습니다.
iPad에 .p12 파일을 이메일로 보내이 인증서를 설치했습니다. 첨부 파일을 탭하고 비밀번호를 입력하면 Safari에서 사이트에 액세스 할 수 있습니다. 안타깝게도 애플리케이션 샌드 박싱으로 인해 내 앱이 REST 서비스와 통신 할 수있는 것은 아닙니다.
내 응용 프로그램에서 REST 서비스와의 모든 통신에 ASIHTTPRequest를 사용하고 있습니다. 각 요청은 ASIHTTPRequest의 서브 클래스입니다. 내가해야만한다는 것을 알게 된 첫 번째 일은 [self setValidatesSecureCertificate:NO];
으로 전화하여 서버에 대한 SSL 연결을 시도합니다. 그게 전부라면, 나는 서비스에서 403 오류 코드를 되 찾는다.
이제 인증서 사용 요청을받는 방법을 알아낼 수 없습니다. 나는, 별도의 .cer 파일로 세 가지 항목을 수출 프로젝트에 그들을 포함하여 아래의 코드를 사용하여 요청에 추가 시도했다 :
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"]];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (CFDataRef)data);
...
[self setClientCertificates:[NSArray arrayWithObjects:(id)cert, ..., nil]];
코드가이 방법을 사용하여 문제없이 실행하는 동안을, 나는 아직도 얻을 403 오류.
저는 응용 프로그램에 .p12 파일을 포함시키고 동일한 코드를 사용하여 가져 오기까지했습니다. SecCertificateCreateWithData
이 nil을 리턴하기 때.에 실패합니다.
나는 내가 여기서 뭘하고 있는지 정말로 모르겠다는 것을 인정한다. 이것은 모두 내 머리 위로 조금이며 누구든지 내게 줄 수있는 도움은 크게 감사하겠습니다.
링크가 깨졌습니다.이 링크가 있어야합니다. https://developer.apple.com/library/content/documentation/Security/Conceptual/CertKeyTrustProgGuide/index.html – Oriol