klink0v (klink0v) wrote,
klink0v
klink0v

Неочевидный косяк в EasyRSA

Вместе с OpenVPN поставляется комплект shell-скриптов под названием "EasyRSA". Это такая простенькая кустарно-примитивная PKI, но со своей задачей вполне справляется. Сертификатики выпускает, отзывает, инвентаризирует. Но есть там некоторые "приколы", совершенно на первый взгляд неочевидные.

Список всех выпущенных сертификатов хранится в файле "index.txt" (так называемая TXT_DB) в нижеследующем формате.

Столбцы таблицы разделены символом "\t" (табуляция). Смысл каждого столбца (слева направо).


  1. Литера-признак. "V" - "valid", "R" - revoked, "E" - expired.

  2. Дата-время "протухания" сертификата в UTC.

  3. Дата-время, когда сертификат был отозван (если был). В моём примере отсутствует.

  4. Серийный номер сертификата в шеснадцатеричной системе счисления (HEX).

  5. Не используется (зарезервировано). Там всегда значится слово "unknown".

  6. Поле "Subject" сертификата.

Обычно оно вполне неплохо работает. Но есть нюансы. Например, если какой-то из сертификатов в некоторый момент времени "протух" естественным путём, и мы хотим выпустить ему на замену точно такой же, но с новым сроком годности, у нас возникнут проблемы. Потому что в наборе скриптов не предусмотрено логики, которая отслеживала бы истечение сроков и изменяла бы литеру-признак с "V" на "E". В результате при попытке сгенерировать сертификат OpenSSL абсолютно неинформативно выругается нам типа "error creating name index:(2,8,16)". Где первое число в скобках - код ошибки, второе и третье - номера "проблемных" строчек в index.txt, начиная с нуля.

Поправить можно очень просто: вручную пройти по табличке в файле "index.txt", найти там все протухшие сертификаты и заменить для них "V" на "E" в первом столбце. После этого никаких вопросов с перегенерацией не возникает.

Кстати, если кто-нибудь знает нормальную вменяемую PKI, пожалуйста поделитесь своими соображениями. Лично я пробовал в свое время PyCA и OpenXPKI. Ни та, ни другая не понавились по разным причинам.

Tags: x509, администрирование, безопасность
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments