`req -x509` - указывает, что мы хотим использовать управление запросами на подписание сертификатов X.509 (CSR). X.509 — это инфраструктура открытых ключей, используемая стандартами SSL и TLS для управления ключами и сертификатами;
`-nodes` - предписывает OpenSSL пропустить опцию защиты нашего сертификата кодовой фразой;
`-days 365` - эта опция устанавливает период действия сертификата. Здесь мы устанавливаем срок действия в один год. Многие современные браузеры отклоняют любые сертификаты, срок действия которых превышает один год;
`-newkey rsa:2048` - указывает, что мы хотим сгенерировать новый сертификат и новый ключ одновременно. Мы не создали требуемый ключ для подписи сертификата на предыдущем шаге, и поэтому нам нужно создать его вместе с сертификатом. Часть rsa:2048 предписывает создать ключ RSA длиной 2048 бит;
`-keyout` - эта строка указывает OpenSSL, где разместить генерируемый файл закрытого ключа;
Далее необходимо ответить на вопросы. Наиболее важная строка `Common Name`. Нужно ввести имя узла, которое будет использоваться для доступа к серверу. Чтобы иметь возможность использования сертификата в поддоменах, необходимо в имени указать маску поддоменов - `*.`. Например Common name для wildcard сертификата для домена astra.lan будет выглядеть так - `*.astra.lan`.
Если стоит задача сгенерировать несколько сертификатов для разных доменов, мы это можем сделать используя описанный выше простой путь, но, чтобы браузер не ругался на наши самоподписные сертификаты, каждый из них нужно добавить в исключения. Если таких сертификатов много, делать это долго и скучно.
Для решения такой задачи можно пойти другим путём:
- создать конревой сертификат;
- на основе корневого сертификата создать промежуточные запросы на подписание сертификатов для каждого домена;
- сегенерировать сертификаты для каждого домена, подписанные нашим корневым сертификатом;
- добавить в исключения в браузер наш корневой сертификат.
Для использования созданного сертификата в качестве локального центра сертификации необходимо импортировать его на все доступные устройства. Корневой сертификат можно добавить в хранилище ключей/сертификатов ОС либо загрузить напрямую в браузер.