Krótka wersja: Czy ktoś wie, czy certyfikaty klienta X.509 powinny działać na iPadzie dla poczty IMAP? Czy marnuję czas na szukanie funkcji, która nie działa? Jeśli wbudowana aplikacja poczty nie obsługuje certyfikatów IMAP z klientami X.509 (tj .: działają tylko z kontami Microsoft Exchange ActiveSync), czy istnieją aplikacje innych firm, które to robią?
Interesujący jest tylko iOS 5.1 lub nowszy; 5.1 to wersja, z którą testowałem.
Jestem administratorem sieci wymaganej przez zasady do korzystania z certyfikatów klienta X.509 w celu ochrony całej komunikacji zewnętrznej, w tym naszego serwera poczty IMAP (Cyrus IMAPd) i serwera SMTP (postfiks). Żadne z nich nie zaakceptuje połączenia bez przedstawienia przez klienta ważnego certyfikatu klienta X.509. Wyłączenie wymagania certyfikatu klienta nie jest dla mnie opcją i z podobnych powodów nie możemy tunelować ruchu przez VPN.
Mamy teraz użytkowników iPada, którzy chcą połączyć się z naszą siecią i stwierdzają, że jest to problem.
Dla użytkowników komputerów stacjonarnych zwykle instalujemy Thunderbirda, ponieważ ma solidny IMAP z doskonałą obsługą certyfikatów klienta; „po prostu działa” i działa tak samo w przypadku każdej platformy. To nie jest opcja dla iPada.
Niestety, wbudowana aplikacja Mail na iPada nie radzi sobie z certyfikatami klientów dla IMAP. Mogę zainstalować główny certyfikat naszej organizacji i certyfikat klienta użytkownika za pomocą iPhone Configuration Utility. Oba są pokazane jako „zweryfikowane” w Ustawieniach-> Ogólne-> Profile. Następnie iPad akceptuje nasz serwer jako zaufany i pomija wszelkie ostrzeżenia o braku weryfikacji tożsamości serwera.
Poczta nadal nie wysyła certyfikatu klienta, gdy jest on wymagany, więc serwer kończy uzgadnianie. Nie monituje użytkownika o wybranie jednego, ani nie wysyła automatycznie zainstalowanego certyfikatu klienta dla użytkownika, który jest zgodny z certyfikatem CA przedstawionym przez serwer.
Badanie przepływu ruchu między klientem a serwerem pokazuje, że negocjacja TLS kończy się niepowodzeniem, gdy iPad odpowiada pustym zestawem certyfikatów klienta, gdy serwer żąda certyfikatów klienta. Patrz poniżej.
Po podłączeniu do sieci wewnętrznej za pośrednictwem zaszyfrowanego Wi-Fi, gdzie nie jest wymagany certyfikat klienta, aby uzyskać pocztę, urządzenie łączy się i pobiera pocztę. Zewnętrzny dostęp (publiczna sieć Wi-Fi lub 3G) kończy się niepowodzeniem, niezależnie od tego, czy korzystam z portu 993 IMAP z zaznaczoną opcją „Użyj SSL”, czy z portu IMAP + TLS 143 z zaznaczoną opcją „Użyj SSL”. Poza oczywistym brakiem obsługi negocjacji certyfikatów klienta dla IMAP, jest idealny.
Odwołania do obsługi certyfikatów klienta w dokumentacji „Wsparcie korporacyjne” firmy Apple pojawiają się tylko w przypadku omawiania Microsoft Exchange ActiveSync i omawiania obsługi Cisco VPN.
Na forach dyskusyjnych firmy Apple jest kilka pytań, ale nie ma ostatnich ani użytecznych odpowiedzi. Odsyłam do nich linki, ale fora Apple są w tej chwili „gotowe do konserwacji”.
Aby obejść ten problem, prawdopodobnie mogę skonfigurować zablokowaną sieć VPN za pomocą automatycznego połączenia VPN na iPadzie, aby rozmawiać z autoryzowanym klientem IPSec VPN z certyfikatem klienta, który może rozmawiać tylko z serwerami IMAP i SMTP na odpowiednich portach plus DNS, nic więcej. Byłoby to dość makabryczne włamanie, gdyby trzeba było go popełnić.
BTW, konwersacja serwera <-> klienta to:
- C -> S Klient TLSv1 Witaj
- S -> C Serwer TLSv1 Witaj
- S -> C Certyfikat TLSv1, żądanie certyfikatu, serwer Hello Done (wysyła certyfikat serwera, podpisuje certyfikat główny, nazwę wyróżniającą akceptowanego certyfikatu klienta, który jest taki sam jak katalog główny, który podpisał certyfikat serwera)
- C -> S Certyfikat TLSv1 (pusty zestaw certyfikatów, w tym zero certyfikatów)
- S -> C TLSv1 Awaria uzgadniania
Innymi słowy, serwer mówi: „to ja, oczekuję, że dostarczysz certyfikat podpisany przez organ, aby udowodnić, kim jesteś”, a klient odpowiada: „Um, moje papiery są tutaj w tej pustej kopercie. „
Klient ma zainstalowany certyfikat główny i zainstalowany certyfikat klienta, który wymaga nazwy wyróżniającej osoby podpisującej wymaganej przez serwer.