Телефонът отказва връзка и отпечатва No trusted RSA public key found for vpn.example.net, докато същият сертификат на шлюза работи от лаптоп в същата мрежа. Изкушаващото действие е да издадете сертификата наново. Преди това установете кой от трите отказа имате, защото само един от тях е за съдържанието на сертификата.

Три отказа зад едно съобщение

Android изгражда верига от сертификата на шлюза до CA, избран в профила VPN, после сравнява името на сървъра с профила. Известието съобщава резултата, не етапа. Отказ на доверие означава, че веригата не е завършена със сертификатите, предадени в обмена; отказ на идентичност означава, че веригата е валидна, но името не съвпада; отказ на алгоритъм означава, че устройството или профилът не приема типа ключ или подписа.

What you seeWhat it points toFirst move
Chain stops after the leaf in the daemon logintermediate not loaded or not sentload the intermediate as CA material
Chain validates, name differs from the profileidentity mismatchfix the profile name or the certificate SAN
Chain validates, handshake still failskey or signature not acceptedcompare key type against the device

Решавайте с доказателства, вместо да пробвате поправки поред. Един опит при ниво на журнала 2 върху демона ви казва в кой ред сте и струва по-малко от преиздаване на сертификат, който никога не е бил грешен.

Първо решете: пристигна ли цялата верига?

strongSwan изпраща сертификата, настроен за тази връзка, а междинните сертификати са отделни удостоверения. Те трябва да се заредят като CA сертификати, преди демонът да ги постави в полезния товар, затова схема, в която сървърният сертификат е подписан от междинен, коренът е котвата на доверие, а междинният живее само в директорията за изграждане на CA, дава точно този отказ: само листото по мрежата и верига, която свършва рано на телефона.

Проверете какво държи демонът с swanctl --list-certs при внедряване със swanctl или ipsec listcerts при по-стария стартер. Междинният трябва да се появи като CA сертификат с корена над него. Ако липсва, никаква опция на клиента няма да помогне; ако присъства, преминете към следващия въпрос.

После проверете дали ще бъде изпратен. Справката за swanctl.conf документира send_cert, чиято стойност по подразбиране ifasked изпраща сертификати само когато партньорът е поискал, а always изпраща винаги. Старият еквивалент е leftsendcert=always в ipsec.conf. Тази настройка управлява изпращането, не наличността, така че не компенсира междинен сертификат, който демонът никога не е зареждал.

Ако веригата е къса, заредете междинния там, където демонът търси

Поставете междинния в директорията за CA, а не до листото: /etc/ipsec.d/cacerts за схема с ipsec.conf, /etc/swanctl/x509ca за swanctl или пътя, който пакетът ви замества. Презаредете конфигурацията и отново изброете сертификатите. Някои версии изпращат и пакет, който съдържа веригата в листовия файл, но директорията за CA е преносимата подредба между версии и пакети.

Проверете и от страната на клиента. Телефонът вижда само онова, което обменът е пренесъл, затова журналът на демона при ниво 2 трябва да показва междинния сред изпратените сертификати. Ако журналът го показва, а телефонът продължава да се проваля, вие сте в друг ред на таблицата и настройването на CA файлове няма да промени резултата.

Ако веригата е пълна, спрете да редактирате сертификати

Отказът на идентичност е несъответствие между името в профила VPN и името в сертификата. Android сравнява идентичността на сървъра, която сте задали, със сертификата, който е валидирал, затова профил, сочещ към адрес, докато сертификатът посочва име на хост, или профил с име на хост, което сертификатът не покрива, се проваля след успешна валидация на веригата. Поправете грешната страна и поддържайте профила и сертификата съгласувани.

Отказът на алгоритъм се появява при валидна верига и съвпадащо име. Версиите на Android се различават по това кои типове ключове и схеми за подпис приемат, а самият тип профил ограничава опциите. Ако шлюзът използва по-стара или необичайна комбинация, сравнете я с поддържаното от устройството, преди да приемете, че сертификатът е повреден. Журналът на демона ще покаже, че ръкостискането напредва повече, отколкото при доверието, което е сигналът, че веригата вече не е проблемът.

Не инсталирайте междинния като потребителски корен на телефона

Инсталирането на липсващия междинен като потребителски сертификат на телефона премахва предупреждението и променя модела на доверие на телефона за всяко приложение, което приема потребителски корени. То също скрива дефект в доставката, който ще удари следващия клиент, и оставя шлюза да изпраща непълна верига към всяко бъдещо устройство. Трайната поправка е на сървъра, веднъж, за всички клиенти.

Дръжте трите решения отделно в записа за промяна: кои сертификати са предадени, коя идентичност е сравнена и кой алгоритъм е договорен. Шлюз, който винаги изпраща пълната си верига, профил, който именува сертификата правилно, и тип ключ, който паркът поддържа, са три малки факта и те са целият този отказ.

Подобни статии