У меня возникла проблема: я удалил файлы сертификатов с сервера.
Но клиент, у которого есть эти файлы, все еще может подключиться.
Я выяснил, что мне следует отозвать сертификат, и это можно сделать, изменив строку с этим сертификатом в
/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
о состоянии имеющихся сертификатов). Вместо этого вам нужно
openssl ca -revoke <certificate file>
отозвать сертификат во внутреннем OpenSSL CA база данных (в основном добавление информации об отзыве в index.txt
)openssl ca -gencrl -out ca.crl
crl-verify
в конфигурационном файле 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
файл.