내 iOS 앱에서 나는 iPads가 서로 통신 할 수있는 안전한 방법이 필요합니다.iPads 간의 안전한 통신
첫 번째 (안전하지 않은) 구현은 하나의 iPad가 웹 서버를 설정하고 다른 iPads가 일반적인 NSURLSession 요청을 통해 그와 통신한다는 것이 었습니다.
이제 Apple은 (App Transport Security를 통해) HTTPS 사용에 대한 엄격함을 얻었으므로이 문제를 해결하고 iPads간에 보안 계층을 추가하려고합니다.
저는 GCDAsyncSocket (이미 웹 서버용으로 사용)에서 TLS 구현을 살펴 보았습니다. 하지만 이는 인증서 문제를 야기합니다. iPads는 LAN에서 오프라인으로 작업 할 수 있어야하고 IP 주소로 서로 연결할 수 있어야합니다.
ATS는 알려진 CA에서 발급 한 인증서입니다. 또한 고객이 iPads에 맞춤 CA 인증서를 설치하도록 강요 할 수는 없습니다. 내가 할 수 있다고하더라도, 그 iPads에 대한 인증서를 생성 아마 악몽이 될 것입니다.
그럼 내 다음 아이디어는 TLS와 비슷한 레이어로 자체 프로토콜을 구현하는 것입니다. 그러나 물론 TLS와 같이 잘 테스트 된 메커니즘을 사용하는 것을 선호합니다.
여러분 께 좋은 제안이 있기를 바랍니다. 나는 많은 사람들이 원격 서버에 의존하는 것 같지만 (그리고 나는 정말로 오프라인 기능이 필요하다.) 나는 이런 식으로 첫 번째 서버가 될 수없는 것처럼 느낀다.
최소 iOS 요구 사항은 iOS 9 (iPad 2 호환)입니다.
답장을 보내 주셔서 감사합니다. Wi-Fi 보안에만 의존하지 않는 것이 좋습니다. 많은 고객들이 Wi-Fi를 게스트와 공유하는 것이 좋다고 판단합니다. 맞춤 CA를 설정하고 iPads 인증서를 할당하고 호스트 이름 유효성 검사를 우회 (및 TLS 사용) 할 수 있습니다. 그러나 ATS는 iOS 9에서 IP 주소에 적용됩니다. Apple은 iOS 10에서 ATS로 발생한 사고를 수정했는데 (예를 들어 작성한 NSAllowsLocalNetworking 키를 사용하여), 이로 인해 iOS 9에 약간의 골칫거리가 남았습니다. – Zyphrax
설명서가 iOS 10 용인지 확인할 수 있습니다. iOS 9에서는 IP 주소에 대한 HTTP 요청이 ATS에 의해 차단되었습니다. – Zyphrax