Перевод Easy-RSA 3 Quickstart README

Мой вольный перевод статьи [Easy-RSA 3 Quickstart README](https://github.com/OpenVPN/easy-rsa/blob/master/README.quickstart.md). Пакет скриптов Easy-RSA используется для ускорения создания Центра Сертификации, выпуска сертификатов и использования их в OpenVPN-сетях.

2019-10-22

Предисловие от меня

В статье задействован правильный способ использования PKI для OpenVPN, когда операция создания приватных ключей с последующим запросом на сертификацию и операция выпуска сертификата ключа на основе запроса, выполняются на разных системах.

Easy-RSA 3 Quickstart README

Это инструкция как быстро начать использовать Easy-RSA версии 3. Детальный хэлп по использованию и описанию команд может быть найден по команде ./easyrsa -h. Дополнительная документация может быть найдена в директории doc/.

Если вы сделали апгрейд с версии Easy-RSA 2.x, то в той же папке doc/ лежат заметки по апгрейду.

Установка и процедура подписи первого запроса

Здесь в быстром темпе описано, что нужно сделать, чтобы развернуть новую PKI (Инфраструктура Открытых Ключей) и выпустить свой первый подписанный сертификат:

  1. Выберите систему, которая будет вашим Центром Сертификации (CA), где создайте структуру каталогов для новой PKI и сгенерируйте ключи для этого CA следующими командами:
    ./easyrsa init-pki
    ./easyrsa build-ca

  2. На другой системе нуждающейся в сертификате, будущем сервере или клиенте, инициализируйте собственный PKI для генерации ключевой пары и запроса на сертификацию. Заметьте, что рекомендованной процедурой является инициализация этого PKI (init-pki) на отдельной системе от первой (или хотя бы в отдельном каталоге). Если вы не придерживаетесь рекомендованной процедуры и используете один и тот же каталог для выпуска и подписания сертификатов, то пропустите этот init-pki, а так же следующий шаг с описанием импорта запроса import-req.
    ./easyrsa init-pki
    ./easyrsa gen-req EntityName

  3. Скопируйте файл запроса (.req) , например, на флэшку для передачи его на систему с CA и там его импортируйте. Имя EntityName, заданное здесь, является произвольным и используется только для именования файла запроса.
    ./easyrsa import-req /tmp/path/to/import.req EntityName

  4. Подпишите запрос с заданием правильного типа, server или client. Здесь пример для типа client:
    ./easyrsa sign-req client EntityName

  5. Совершите обратный перенос нового подписанного сертификата на систему, нуждавшейся в сертификате. Так же может понадобится перенести сертификат Центра Сертификации (ca.crt), если конечно, ранее уже не было произведено его копирование.

  6. Теперь нуждавшаяся система имеет свою ключевую пару, подписанный сертификат, и сертификат CA.

Подписание следующих запросов

Выполняйте пункты со второго до шестого, чтобы генерировать ключевые пары и получать подписанные сертификаты.

Отзыв сертификатов и создание CRL

Эта задача производится только на CA-системе.

Для отзыва ранее выданного сертификата используйте имя сертификата, использованное в процессе импорта:
./easyrsa revoke EntityName

Для создания обновлённого Списка Отозванных Сертификатов (CRL), который содержит все отозванные сертификаты, выполните:
./easyrsa gen-crl

После процедуры генерации, обновлённый CRL необходимо разослать всем заинтересованным лицам.

Генерация Diffie-Hellman (DH) params

Операция генерации DH-параметра, используемого, кстати, только на стороне сервера в режиме TLS, очень ресурсоёмкая и на неё может быть затрачено несколько минут или даже десятков минут. Поэтому разумнее генерировать DH-param прямо на целевых серверах, дабы избежать бессмысленной траты ресурсов CA-системы. Выполните на целевом сервере openssl dhparam -out dh.pem 2048. В противном случае можете использовать Easy-RSA, где DH-параметр генерируется командой:
./easyrsa gen-dh

Просмотр информации о запросе или сертификате

Просмотр детальной информации о запросе или сертификате производится нижеследующими командами, которым на вход подаём короткие имена объектов. Очевидно, что без наличия соответствующих файлов запрос информации вызовет ошибку.
./easyrsa show-req EntityName
./easyrsa show-cert EntityName

Изменение пароля приватного ключа

RSA и EC приватные ключи могут быть повторно зашифрованы с новым паролем с помощью одной из следующих команд в зависимости от типа ключа:
./easyrsa set-rsa-pass EntityName
./easyrsa set-ec-pass EntityName

По выбору, пароль может быть вообще убран из ключа с помощью опции nopass. Смотрите документацию по команде.