Назад | Перейти на главную страницу

Удаление сертификата OpenVPN и подключение без файла сертификата на сервере

У меня возникла проблема: я удалил файлы сертификатов с сервера.

Но клиент, у которого есть эти файлы, все еще может подключиться.

Я выяснил, что мне следует отозвать сертификат, и это можно сделать, изменив строку с этим сертификатом в

/etc/openvpn/easy-rsa/keys/index.txt

чтобы первая символьная строка была R, а не V.

Но ранее я удалил строку для этого сертификата из файла, потому что попытка сгенерировать этот сертификат снова дала файл размером 0 байт.

Как я читал, он не сможет подключиться после удаления из index.txt, но он подключается.

Что может вызвать проблему и как я могу запретить подключение этого конкретного сертификата?

Я хочу иметь возможность создавать сертификат с тем же именем, CN и другими переменными, которые я установил для каждого сертификата, поскольку тот, который запрещен - вновь созданный сертификат должен иметь возможность подключения.

РЕДАКТИРОВАТЬ:

Решением было отменить изменения в index.txt (изменение R обратно на V в сертификате, который я хотел отозвать) и создание CRL в easy-rsa, который отсутствовал.
Index.txt нельзя изменять вручную так, как это сделал я, потому что в нем отсутствовала дата отзыва, и я не мог создать недостающий CRL. Я узнал, что отзыв должен быть сделан /etc/openvpn/easy-rsa/revoke-full <cert name>, со всеми варами, как при создании сертификата, в моем случае.

Простой ответ это не работает, потому что вы все неправильно поняли.

Ваше основное заблуждение, похоже, заключается в том, что у OpenVPN и центра сертификации действительно есть канал связи, поэтому OpenVPN автоматически узнает, какие сертификаты вы хотите разрешить. Это не вариант. OpenVPN и центр сертификации являются полностью отдельными объектами (даже если они оба находятся на одном хосте) и не имеют никакой связи между собой.

CA «подписывает» запросы на сертификацию (в основном открытые ключи, связанные с идентификационной информацией, такой как имя хоста), зашифровывая хэш запроса на сертификацию своим собственным секретным ключом. OpenVPN проверяет, а) может ли он расшифровать хэш с использованием открытого ключа CA (который у него есть, обычно находится где-то в файле ca.crt), и проверяет, является ли хеш правильным для данного сертификата. Для этого не требуются и не используются «живые» подключения к CA.

Вы не можете отозвать сертификат, удалив его из каталога CA (обратите внимание, что если вы удалили сертификат клиента, и это была ваша единственная копия, openssl ca больше не позволит вам отозвать его) или изменить index.txt (этот файл является лишь указанием на openssl ca о состоянии имеющихся сертификатов). Вместо этого вам нужно

  1. бегать openssl ca -revoke <certificate file> отозвать сертификат во внутреннем OpenSSL CA база данных (в основном добавление информации об отзыве в index.txt)
  2. создать список отзыва сертификатов, используя openssl ca -gencrl -out ca.crl
  3. скопируйте этот список отзыва в файл списка отзыва OpenVPN (см. crl-verify в конфигурационном файле OpenVPN)
  4. см. OpenVPN отклоняет соединение при следующей проверке сертификата

Если вы используете easy-rsa сценарий оболочки оболочки установлен для OpenSSL CAсм. Раздел OpenVPN об отзыве сертификата для получения более подробной документации о том, как достичь вышеуказанного с помощью сценариев easy-rsa. Основная процедура

# cd into the easy-rsa directory
cd <somewhere>/easy-rsa
# load your CA-related variables into the shell environment from the ./vars file
. ./vars
# run the revoke script for <clientcert.pem>
./revoke-full clientcert

вы найдете crl.pem в $KEY_DIR каталог, как определено в вашем ./vars файл.