Błąd zaufania Android IKEv2: wyślij certyfikat pośredni CA, a nie główny
Telefon odrzuca bramę, ponieważ otrzymany łańcuch kończy się zbyt wcześnie. Zdecyduj: wyślij certyfikat pośredni, napraw tożsamość lub zmień typ klucza.
Telefon odmawia połączenia i wypisuje No trusted RSA public key found for vpn.example.net, podczas gdy ten sam certyfikat bramy działa z laptopa w tej samej sieci. Kuszącym ruchem jest ponowne wydanie certyfikatu. Zanim to zrobisz, ustal, który z trzech błędów masz, ponieważ tylko jeden z nich dotyczy zawartości certyfikatu. Komunikat obejmuje niekompletny łańcuch, niezgodność tożsamości oraz nieobsługiwany klucz lub podpis, a każdy ma inną naprawę.
Trzy błędy za jednym komunikatem
Android buduje łańcuch od certyfikatu bramy do CA wybranego w profilu VPN, a następnie porównuje nazwę serwera z profilem. Powiadomienie podaje wynik, a nie etap. Błąd zaufania oznacza, że łańcucha nie można było ukończyć z certyfikatów dostarczonych w wymianie; błąd tożsamości oznacza, że łańcuch został zweryfikowany, ale nazwa się nie zgadzała; błąd algorytmu oznacza, że urządzenie lub profil nie akceptuje typu klucza albo podpisu.
| What you see | What it points to | First move |
|---|---|---|
| Chain stops after the leaf in the daemon log | intermediate not loaded or not sent | load the intermediate as CA material |
| Chain validates, name differs from the profile | identity mismatch | fix the profile name or the certificate SAN |
| Chain validates, handshake still fails | key or signature not accepted | compare key type against the device |
Decyduj na podstawie dowodów, a nie próbując napraw po kolei. Jedna próba na poziomie logu 2 wobec demona mówi, w którym wierszu jesteś, i kosztuje mniej niż ponowne wydanie certyfikatu, który nigdy nie był błędny.
Najpierw zdecyduj: czy dotarł cały łańcuch?
strongSwan wysyła certyfikat skonfigurowany dla tego połączenia, a certyfikaty pośrednie to osobne poświadczenia. Muszą zostać wczytane jako certyfikaty CA, zanim demon umieści je w ładunku, więc układ, w którym certyfikat serwera jest podpisany przez certyfikat pośredni, korzeń jest kotwicą zaufania, a certyfikat pośredni znajduje się tylko w katalogu budowania CA, daje dokładnie ten błąd: tylko liść na łączu, łańcuch kończy się wcześnie na telefonie.
Sprawdź, co ma demon, za pomocą swanctl --list-certs we wdrożeniu swanctl lub ipsec listcerts ze starszym starterem. Certyfikat pośredni powinien pojawić się jako certyfikat CA z korzeniem nad nim. Jeśli go brakuje, żadna opcja klienta nie pomoże; jeśli jest, przejdź do następnego pytania.
Następnie sprawdź, czy zostanie wysłany. Dokumentacja swanctl.conf opisuje send_cert, którego domyślne ifasked wysyła certyfikaty tylko wtedy, gdy druga strona o to poprosi; always wysyła zawsze. Starszym odpowiednikiem jest leftsendcert=always w ipsec.conf. To ustawienie kontroluje wysyłanie, a nie dostępność, więc nie zrekompensuje certyfikatu pośredniego, którego demon nigdy nie wczytał.
Jeśli łańcuch jest krótki, wczytaj certyfikat pośredni tam, gdzie szuka demon
Umieść certyfikat pośredni w katalogu CA, a nie obok liścia: /etc/ipsec.d/cacerts dla konfiguracji ipsec.conf, /etc/swanctl/x509ca dla swanctl albo ścieżka, którą zastępuje twoja paczka. Przeładuj konfigurację i ponownie wylistuj certyfikaty. Niektóre wersje wysyłają też pakiet zawierający łańcuch w pliku liścia, ale katalog CA to przenośne rozwiązanie w różnych wersjach i pakietach.
Sprawdź także po stronie klienta. Telefon widzi tylko to, co przeniosła wymiana, więc log demona na poziomie 2 powinien pokazać certyfikat pośredni wśród przesłanych certyfikatów. Jeśli log go pokazuje, a telefon nadal zawodzi, jesteś w innym wierszu tabeli, a dalsze dostrajanie plików CA nie zmieni wyniku.
Jeśli łańcuch jest kompletny, przestań edytować certyfikaty
Błąd tożsamości to niezgodność między nazwą w profilu VPN a nazwą w certyfikacie. Android porównuje skonfigurowaną tożsamość serwera z certyfikatem, który zweryfikował, więc profil wskazujący adres, gdy certyfikat podaje nazwę hosta, albo profil podający nazwę hosta, której certyfikat nie obejmuje, zawodzi po pomyślnej weryfikacji łańcucha. Napraw stronę, która jest błędna, i utrzymuj zgodność profilu z certyfikatem, gdy którakolwiek się zmieni.
Błąd algorytmu pojawia się przy ważnym łańcuchu i pasującej nazwie. Wersje Androida różnią się akceptowanymi typami kluczy i schematami podpisów, a sam typ profilu ogranicza opcje. Jeśli brama używa starszej lub nietypowej kombinacji, porównaj ją z tym, co obsługuje urządzenie, zanim uznasz certyfikat za uszkodzony. Log demona pokaże, że uzgadnianie idzie dalej niż w przypadku zaufania, i to jest sygnał, że łańcuch nie jest już problemem.
Nie instaluj certyfikatu pośredniego jako roota użytkownika na telefonie
Zainstalowanie brakującego certyfikatu pośredniego jako certyfikatu użytkownika na telefonie usuwa ostrzeżenie i zmienia model zaufania telefonu dla każdej aplikacji, która akceptuje rooty instalowane przez użytkownika. Ukrywa też błąd dostarczania, który dotknie następnego klienta, i pozostawia bramę wysyłającą niekompletny łańcuch każdemu przyszłemu urządzeniu. Trwała naprawa jest na serwerze, raz, dla wszystkich klientów.
Trzymaj trzy decyzje osobno w zapisie zmian: które certyfikaty przesłano, która tożsamość została porównana i który algorytm wynegocjowano. Brama, która zawsze wysyła pełny łańcuch, profil, który poprawnie nazywa certyfikat, i typ klucza obsługiwany przez flotę to trzy małe fakty, i stanowią całość tego błędu.