Отказ в соединении — не проблема сертификата: руководство по VPN
Отказ — это ответ транспортного уровня; проверка сертификата происходит позже, внутри рукопожатия. Фиксированный порядок проверок на утро после обслуживания CA.
Клиент сообщает об отказе в соединении сразу после того, как вы пересоздали CRL, поэтому CRL выглядит виноватым. Это не так. Отказ — ответ транспортного уровня, а проверка сертификата происходит позже, внутри рукопожатия туннеля. Совпадение по времени — это контекст, а не доказательство.
Две проверки разделяют случаи меньше чем за минуту, и ни одна из них не трогает настройки доверия.
Читайте ошибку на том уровне, который её создал
ECONNREFUSED от connect означает, что попытка транспорта была отклонена: что-то ответило reset, либо стек сообщил о недоступном порте. Проблема сертификата не может дать такую ошибку, потому что рукопожатие TLS никогда не начинается без транспортного соединения. Если вы видите отказ, клиент так и не дошёл до предъявления сертификата. Этот единственный факт исключает отзыв как причину.
Верно и обратное. Отозванный сертификат даёт завершённое TCP-соединение и неудачное рукопожатие, которое на сервере записывается как ошибка проверки.
Отказ TCP: никто не слушает
Для TCP проверьте, запущен ли нужный экземпляр и привязан ли он к адресу и порту из профиля. ss -lntp показывает слушателей, и их отсутствие — обычное объяснение. Межсетевой экран, который отклоняет, а не отбрасывает, даёт то же сообщение на стороне клиента, поэтому проверяют и то и другое.
Проверьте и семейство адресов. Служба, привязанная к 127.0.0.1 или только к IPv6, откажет клиенту, который разрешается в другой адрес.
Затем читайте журнал службы, а не гадайте. Перезапуск после обслуживания CA может не удаться из-за нечитаемого или отсутствующего файла и так и не дойти до состояния прослушивания, а журнал называет файл. Это ошибка запуска, другая ошибка, нежели отклонённый сертификат.
У UDP нет рукопожатия, которое можно отклонить
OpenVPN через UDP не устанавливает соединение в смысле TCP, поэтому в момент connect отклонять нечего. В Linux ошибка, показанная UDP-сокетом, может происходить от ICMP port-unreachable, сгенерированного более ранней датаграммой. страница руководства udp(7) описывает такое асинхронное поведение.
Поэтому UDP-клиент может вывести отказ, когда процесс сервера работает, но не привязан к ожидаемому адресу.
Где на самом деле проверяется CRL
CRL запрашивается во время рукопожатия TLS, после того как противоположная сторона предъявит свой сертификат, и только если конфигурация сервера это разрешает. Опция OpenVPN crl-verify указывает на файл, а сбой появляется в журнале сервера как ошибка проверки с указанием сертификата.
Поэтому отозванный клиент подключается на транспортном уровне, а затем не проходит аутентификацию. Тот же сервер, тот же порт, совершенно другое сообщение.
Проверьте издателя и сроки действия CRL, когда дойдёте до этого этапа. CRL, подписанный не тем CA, или тот, что истёк до подключения клиента, даёт ошибки проверки, не имеющие никакого отношения к собственному сертификату клиента.
Короткое руководство на следующий раз
Сначала подтвердите транспорт: слушатель есть, семейство адресов верное, межсетевой экран не отклоняет. Затем подтвердите, что служба дошла до состояния прослушивания, прочитав журнал запуска. И только после этого смотрите ошибки рукопожатия в поисках сообщений о проверке. Держите этот порядок неизменным, потому что каждый шаг исключает целый класс причин.
Запишите транспорт, разрешённый адрес назначения, порт и точный текст ошибки. Переустановка клиента уничтожает эти доказательства и обычно ничего не меняет.