OpenVPN — Revoke certificate without .crt file
Если попытаться отозвать сертификат клиента, когда он, например, удален с сервера(испорчен), получишь ошибку «Unable to revoke as the input file is not a valid certificate».
admin@vpn:/usr/local/etc/openvpn/easy-rsa# ./easyrsa.real revoke UserName Note: using Easy-RSA configuration from: ./vars Easy-RSA error: Unable to revoke as the input file is not a valid certificate. Unexpected input in file: /usr/local/etc/openvpn/easy-rsa/pki/issued/UserName.crt
А при попытке выпустить этот же сертификат клиента openvpn скрипт выдает следующее:
Certificate is to be certified until Jul 13 11:57:53 2016 GMT (365 days) failed to update database TXT_DB error number 2 Easy-RSA error: signing failed (openssl output above may have more detail)
Ошибка связана с уже имеющимся CommonName
сертификата и создать одноименный нельзя пока старый не будет отозван. Тут два варианта — или использовать другое имя, или отзывать старый сертификат. По политике сверху, имя ключа (пользователя) менять нельзя, поэтому надо отзывать.
Обычно отозвать проблем нет, делается это командой ./easyrsa revoke UserName
, но при ее выполнении сам файл сертификата не найден или поврежден:
./easyrsa revoke UserName Note: using Easy-RSA configuration from: ./vars Easy-RSA error: Unable to revoke as the input file is not a valid certificate. Unexpected input in file: /home/ca/easy-rsa-master/easyrsa3/pki/issued/UserName.crt
В моем случае файл сертификата сначала удален, а потом и вовсе заменён «древним». Средствами самого easyrsa отозвать сертификат в итоге невозможно.
Выхода из положения два:
Для этого отредактировать файл index.txt.attr, заменив значение уникальности имени с yes на no:
mcedit /home/ca/easy-rsa-master/easyrsa3/pki/index.txt.attr unique_subject = no
Решение рабочее, но пользоваться им постоянно не безопасно. К тому же, будет легко запутаться в выданных сертификатах, если их количество велико.
2. Более предпочтительным решением является редактирование файла базы сертификатов /usr/local/etc/openvpn/easy-rsa/pki/index.txt
, который выглядит следующим образом:
V 141203091049Z 03 unknown /CN=UserName R 150301095139Z 141202085814Z 04 unknown /CN=UserName2
Где первый столбец говорит о валидности сертификата (V-valid, R-revoked), второй о дате его истечения, третий о дате отзыва (если был отозван), четвертый — серийный номер сертификата. 150301095139Z читается как 15- год, 03- месяц, 01- день, 09- час, 51- минута, 39- секунда, Z- хрен его знает что она значит, но присутствует в каждом указании даты.
Для отзыва необходимо отредактировать строку с нужным пользователем. Изменитья статус валидности на «R» и добавить дату отзыва(150714010101Z):
R 141203091049Z 150714010101Z 03 unknown /CN=UserName
На всякий случай обновить базу ключей:
./easyrsa update-db
Теперь можно создавать сертификаты для пользователя UserName.
Источник: https://notessysadmin.com/revoke-easy-rsa-certificate-without-the-crt-file