Разом отвалились постоянно подключенные клиенты одного OpenVPN сервера. Сразу подумал на протухшие сертификаты либо клиентов, либо самого сервера. Не раз такое случалось. При генерации значения по умолчанию обычно год-два, редко больше. Если специально не изменишь, то потом перевыпускать придётся.
Проверил сначала клиентов, всё ОК. Немного удивился. Ожидал увидеть, что просрочены они. В логах самих клиентов не было подробностей, только невозможность установить TLS соединение. Проверил сертификат сервера, с ним тоже всё в порядке.
Тут уже немного повнимательнее стал смотреть. Проверил лог сервера. Там ошибка прямым текстом указана. Надо было с него начинать:
TLS: Initial packet from [AF_INET]1.2.3.4:40564 VERIFY ERROR: depth=0, error=CRL has expiredOpenSSL: error:1417C086:SSL routines:tls_process_client_certificate:certificate verify failedTLS_ERROR: BIO read tls_read_plaintext errorTLS Error: TLS object -> incoming plaintext read errorTLS Error: TLS handshake failedОсновное тут: CRL has expired. Файл со списками отозванных сертификатов оказался просрочен. Сколько лет использую OpenVPN, в том числе с CRL (Certificate Revocation List), а первый раз с таким сталкиваюсь (поправочка, 7 лет назад уже сталкивался, но забыл).
Файл crl.pem был сгенерирован с помощью набора скриптов easy-rsa. В них по умолчанию параметр EASYRSA_CRL_DAYS выставлен в 180 дней. Если за этот срок не будет нового отзыва и пересоздания файла crl.pem, то сервер OpenVPN перестанет принимать соединения с указанной выше ошибкой.
Просто пересоздал файл, увеличив срок жизни файла до 10 лет. В своём случае не вижу смысла ограничивать срок жизни этого файла. К тому же последнее время обхожусь без него. Для тех, кто не знает, напомню, что нежелательных клиентов OpenVPN сервера можно отключать с помощью настройки сервера ccd-exclusive.
Если указана эта настройка, то для того, чтобы подключение клиента состоялось, для него должен существовать файл с настройками в client-config-dir. Если его там нет, он не подключится. Я всегда пользуюсь этими настройками, так что файлы конфигураций для клиентов есть. Если надо кого-то отключить, то достаточно просто удалить этот файл. И клиент не сможет подключиться.
Это не отменяет процедуры отзыва сертификатов. Сертификаты неактивных клиентов на всякий случай лучше отзывать. Но можно это делать по плану в какой-то определённый день, а не сразу после принятия решения об отключении. Для этого надо отозвать сертификат, сформировать новый список CRL, заменить существующий и перезапустить службу OpenVPN. Просто удалить файл конфигурации быстрее и проще.
📌 Полезные материалы по теме OpenVPN:
▪️Одновременный запуск нескольких клиентов OpenVPN
▪️Маршруты для клиента на основе url, а не ip адреса
▪️Запуск OpenVPN сервера на разных внешних IP адресах
▪️Диагностика низкой скорости через OpenVPN
▪️Запускаем OpenVPN сервер за 443 портом веб сервера
▪️Бесплатная веб панель для управления сервером
▪️Создание туннелей с коррекцией ошибок (Forward Error Correction)
На всякий случай уточню, что ни в заметке, ни в ссылках, нет никакой информации об обходе блокировок сайтов. Это описание использования OpenVPN для обеспечения сетевой связности распределённых сетей.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#openvpn