2016-09-14 22 views
13

각 고객은 자신의 네트워크 인프라를 사용하는 여러 고객에게 배포 할 iOS 응용 프로그램을 보유하고 있습니다. 인증서 고정 기능을 추가하고 싶습니다만, 동적 인 방식으로 수행해야합니다. 인증서/pubkey를 번들로 제공 할 수 없기 때문에 각 고객마다 다른 빌드가 필요합니다.동적 인증서 피닝

제 아이디어는 앱 시작시 클라이언트 당 구성된 HTTPS 서버를 쿼리하고 인증서를 얻은 다음 잠재적으로 공개 키를 추출한 다음 핀으로 고정하는 것입니다.

Swift 또는 Objective-C에서이 작업을 수행 할 수 있습니까? 관련 코드 샘플이나 설명서를 찾을 수 없었습니다.

+0

SSLPinningMode를 사용해 보셨습니까? [this] (http://stackoverflow.com/questions/16613081/ssl-pinning-with-afnetworking) 도움이 될 수 있습니다. 앱 스토어에서 배포 할 계획이라면 받아 들일 수 있을지 의심 스럽습니다 (인증서 다운로드 및 추출에 관한 부분). – jugutier

+2

다음은 iOS 푸시 진입 제한의 예입니다. https://github.com/iosptl/ios7ptl/blob/master/ch14-Security/Connection/Connection/ConnectionViewController.m. 'RNSecTrustEvaluateAsX509'를보십시오. 연결에서 인증서를 추출하는 코드가 포함되어 있습니다. 그런 다음 인증서를 파일에 기록한 다음 나중에 https://github.com/rnapier/RNPinnedCertValidator와 같은 표준 고정 방법을 사용할 수 있습니다. –

+0

관련없는 메타 크래프트가 있지만 @RobNapier는 iOS 10의 한계를 극대화하기위한 새로운 버전을 출시 할 계획입니까? – JAL

답변

1

운영체제에서 인증서 또는 키를 임베드하면 운영상의 문제로 인해 관리가 어려워지고 복구가 훨씬 쉬워집니다. 처음으로 서버가 응용 프로그램에 보낸 인증서를 고정하면 현재 인증서가 만료되거나 교체 된 후에 새 인증서를 지원할 수있는 메커니즘이 없습니다. 그게 아직도하고 싶은 것이 있다면, HPKP 사양을 살펴 보는 것이 좋습니다. HPKP 사양은 브라우저와 동일한 메커니즘을 구현합니다. https://tools.ietf.org/html/rfc7469

또한 App 서버가 직접 제어 할 수없는 경우, 변경하면 서버의 인증서가 예기치 않게 변경되는 경우 응용 프로그램을 벽돌 링하는 결과가 발생합니다. App/customer 서버의 인프라/인증서 변경에 대한 정보를 제공하는 팀이 업데이트를 출시 할 수 있습니까? 그렇지 않다면, 그렇게해서는 안됩니다.

+0

방금이 대답을 upvoted. 나는 이것이 포스터가 요구하는 것과 정확히 일치하지 않는다는 것을 알고 있습니다. 그러나이 답변은 매우 유용하며 포스터가 제안한 것을하는 위험을 지적하고 추가 정보를 제공합니다. 도움 섹션에 따라이 게시물은 '흥미롭고 잘 연구되고 유용합니다.' –