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

Мой вольный перевод статьи Easy-RSA 3 Quickstart README (https://github.com/OpenVPN/easy-rsa)

2019-05-13

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

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

  • PKI — (Public Key Infrastructure) Инфраструктура Открытых Ключей
  • CA — (Certification authority) Центр Сертификации
  • KeypairКлючевая пара или просто Ключи состоит из двух взаимосвязанных файлов-ключей:
    • Private KeyПриватный Ключ или Закрытый Ключ (просто набор случайных символов)
    • Public KeyПубличный Ключ или Открытый Ключ (просто набор случайных символов)
  • CertificateСертификат или Сертификат Открытого Ключа содержит Публичный Ключ, Подпись Центра Сертификации и различные параметры сертификата, например, срок действия, где может применяться и т.д.
  • EntityName — здесь имя объекта. Может быть именем запроса на сертификацию, ключевой пары, сертификата и т.д.(?)
  • CRL — (Certificate Revocation List) Список Отозванных Сертификатов
  • DH — (Diffie-Hellman params). Устанавливается на серверы и затрудняет анализ данных полученных при перехвате трафика в случае компрометации ключей (?).

Обзор происходящего:

  • Алиса на своём ноутбуке выполнила пункт первый настоящей инструкции, то есть инициализировала PKI и создала ключи для CA и самоподписанный сертификат Центра Сертификации. В результате у Алисы появился "Центр Сертификации" компании "АлисаСофт". Алиса готова подписывать направляемые ей запросы на сертификацию своим сертификатом CA, а значит выпускать подписанные сертификаты для тех людей или компаний, кто доверяет Алисе.
  • Борис на своём новом компе с установленным OpenVPN-сервером так же инициализировал в отдельной папке свой собственный PKI, где сгенерировал ключи и запрос на сертификацию. Борис отправил файл запроса в компанию Алисы, так как он доверяет Алисе.
  • Алиса знает Бориса и на основе его запроса выпустила сертификат с подписью своего CA с дополнительной пометкой server. Алиса отправила новый сертификат Борису. Так же Алиса отправила Борису сертификат Центра Сертификации, чтобы Борис смог с помощью этого сертификата проверять у сертификатов клиентов, пытающихся подключиться к его OpenVPN серверу, наличие у них подписи от CA Алисы.
  • Вадим рассчитывает подключаться к OpenVPN серверу Бориса, поэтому на своём ноутбуке также инициализировал в отдельной папке свой собственный PKI, создал ключи и запрос на сертификацию. Вадим отправил файл запроса в компанию Алисы, так как OpenVPN сервер Бориса доверяет сертификатам с подписью CA только от компании "АлисаСофт".
  • Алиса проверила документы Вадима и на основе его запроса выпустила сертификат с подписью своего CA, но с пометкой client. Алиса вернула новый подписанный сертификат Вадиму. Также Вадим получил от Алисы сертификат Центра Сертификации, чтобы Вадим смог с помощью этого сертификата проверить подпись сертификата OpenVPN сервера Бориса, во избежание подключения к подставным серверам.
  • Герман, ранее уже получивший подписанный сертификат от Алисы, подозревает, что его ключи кто-то украл. Он заявил об этом Алисе. Алиса произвела процедуру отзыва сертификата Германа. Файл со Списком Отозванных Сертификатов Алиса отправила Борису, который перенастроил свой OpenVPN сервер таким образом, чтобы сертификаты подключающихся клиентов сверялись с CRL от Алисы и, в случае недействительности, в обслуживании отказывалось.
  • Через некоторое время и Вадим получил этот файл и настроил свой OpenVPN клиент на проверку CRL. Если будет украден сертификат какого-либо OpenVPN сервера, то это будет гарантией, что Вадим не подключится к подставному серверу.

Easy-RSA 3 Quickstart README

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

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

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

Здесь в быстром темпе описано, что нужно сделать, чтобы запустить новый PKI и выпустить свой первый подписанный сертификат:

  1. Выберите отдельную систему, которая будет действовать как ваш новый Центр Сертификации и создайте структуру для нового 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 и импортируйте его. Имя, данное здесь, является произвольным и используется только для именования файла запроса.
    ./easyrsa import-req /tmp/path/to/import.req EntityName
  4. Подпишите запрос с заданием правильного типа. Здесь пример для типа client:
    ./easyrsa sign-req client EntityName
  5. Совершите обратный перенос нового подписанного сертификата на систему, нуждавшейся в сертификате. Так же может понадобится перенести сертификат "Центра Сертификации" (ca.crt), если, конечно, ранее уже не было произведено его копирование.
  6. Теперь нуждавшаяся система имеет свою ключевую пару, подписанный сертификат, и сертификат CA.

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

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

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

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

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

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

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

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

Не понял смысла написания первых двух предложений.

Любой, кто инициализировал собственный PKI, может создать DH-параметр при нужде в нём. Это является нормальным только при использовании TLS сервера. Хотя PKI Центра Сертификации может генерировать DH, разумнее делать эту ресурсоёмкую операцию прямо на серверах, дабы избежать бессмысленной траты ресурсов CA-системы и возможности перехвата при передаче файлов.

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. Смотрите документацию по команде.