Skip to content

Создание самоподписного сертификата

aleserche edited this page Apr 11, 2020 · 1 revision

Создание самоподписного сертификата

Requirement

  • openssl

Выпуск корневого сертификата CA

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

Сначала создается корневой ключ, затем корневой сертификат.

openssl genrsa -out localCA.key 2048
openssl req -x509 -new -nodes -key localCA.key -sha256 -days 365 -out localCA.crt

При выполнении последней команды будут заданы вопросы:

-----
Country Name (2 letter code) [AU]:RU 
State or Province Name (full name) [Some-State]:Chelyabinsk 
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nullpany 
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Итогом будут два файла localCA.key и localCA.crt.

Выпуск сертификатов подписанного своим CA

Создаем приватный ключ и запрос на сертификат:

openssl genrsa -out nullpany.localhost.key 2048
openssl req -new -key nullpany.localhost.key -out nullpany.localhost.csr

Теперь необходимо подписать запрос на сертификат корневым сертификатом:

openssl x509 -req -in nullpany.localhost.csr -CA localCA.crt -CAkey localCA.key -CAcreateserial \
-out nullpany.localhost.crt -days 365 -sha256 -extfile nullpany.localhost.ext

Для удобвства использует ext файл, в котором задана освновная конфигурация выпускаемых сертификатов. Так же в нем указывается alt names, которые позволяют настроить домены для каждого проекта.

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = nullpany.localhost
DNS.2 = *.nullpany.localhost
DNS.3 = *.project-a.nullpany.localhost
DNS.4 = *.project-b.nullpany.localhost
DNS.5 = *.project-c.nullpany.localhost

В результате будет получена пара ключ и сертификат: nullpany.localhost.key и nullpany.localhost.crt.

Использование сертификатов

Теперь членам команды можно разослать корневой сертификат localCA.crt, которым останется только добавить его в корневое хранилище. Процесс добавления сертификата в корневое хранилище зависит от используемой ОС и браузера.

Основые инструкции по установке сертификатов можно найти по ссылке

Clone this wiki locally