Юзеры стали жаловаться, что не могут подключиться к одному OpenVPN-серверу. Ко всем остальным нормально, а к этому никак не получается. Проверял их конфиги, вроде всё правильно, посмотрел на сервер (он под pfSense работает), вроде тоже всё нормально. В логи посмотрел — никаких ошибок нету.
Попробовал сам подключиться — да, в натуре, не работает.. А раньше работало. Посмотрел в свой лог, сервер вполне себе отвечает, соединение устанавливается, аутентификация по SSL проходит, но потом соединение мгновенно рвётся. Клиент ещё три раза пытается соединиться — всё то же самое, соединение устанавливается и мгновенно рвётся Ну и потом клиент выключается.
Пошёл сравнивать настройки с другими серверами, где работает. Вроде как всё примерно одинаково, но там работает, а тут нет. Потом случайно нашёл на том же pfSense ещё один OpenVPN, на другом порту, типа, для служебного пользования, а не для юзеров. Попробовал подключиться к нему — работает! Начал внимательно сравнивать конфигурации, разница оказалась в том, что у неработающего сервера в конфиге был указан Certificate Revocation List, а у работающего — нет. Ясное дело, надо проверить, нет ли там лишних сертификатов. Хотя непонятно, кто и зачем мог бы их туда добавить. Скопировал CRL к себе в файлик, запустил openssl crl -in a.crl -text
, а он, блин, ругнулся:
unable to load CRL
140046118483600:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: X509 CRL
Погуглил, как должен выглядеть этот файл в PEM-формате, посмотрел в файл, там в первой строчке ------BEGIN X509 CRL-----
, в последней -----END X509 CRL-----
, посредине что-то закодированное в base64, вроде всё как надо, а openssl’ю что-то не нравится..
Ну, высококвалифицированные сисадмины, кто понял, что тут не так??
Отгадка, как обычно, под катом.
Очень, ОЧЕНЬ неочевидная ошибка: лишний минус в начале первой строчки! Видать, тот, кто этот файлик вписывал в pfSense через веб-интерфейс, чуточку ошибся, и в результате аутентификация проходит, а потом сервер пытается проверить, не отозван ли клиентский сертификат, но получив ошибку вместо подтверждения валидности, рвёт соединение. Непонятно только, почему он про это в лог ничего не писал. Ну, убрал я этот минус, и всё заработало..
Оригинал этой записи в личном блоге.
no subject
no subject