OpenSSL — полноценная криптографическая библиотека с открытым исходным кодом, которая имеет инструменты, предназначенные для генерации приватных ключей RSA и Certificate Signing Requests (CSR-запросов) и управления сертификатами.
1. Сгенерируйте приватный ключ для Certificate Authority (CA):
openssl genrsa -out root_ca.key 4096
2. Выпустите сертификат для CA на 10 лет:
openssl req -x509 -new -key root_ca.key -sha256 -days 3650 \
-out root_ca.crt -subj "/CN=Local Root CA" \
-addext "basicConstraints=critical,CA:TRUE" \
-addext "keyUsage=critical,keyCertSign,cRLSign" \
-addext "subjectKeyIdentifier=hash"
1. Сгенерируйте приватный ключ для сервера:
openssl genrsa -out private.key 2048
2. Создайте запрос на сертификат для сервера:
openssl req -new -key private.key -subj "/CN=server.your-domain.net" -out server.csr
1. Создайте файл конфигурации для выпуска сертификата сервера:
nano san.ext
2. Внесите необходимые параметры в созданный файл конфигурации:
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = your-domain.net
DNS.2 = *.your-domain.net
IP.1 = 192.0.2.10
3. Выпустите сертификат на 5 лет для сервера:
openssl x509 -req -in server.csr -CA root_ca.crt -CAkey root_ca.key -CAcreateserial -out public.crt -days 825 -sha256 -extfile san.ext
8. При необходимости создайте fullchain-сертификат, который хранит в себе всю цепочку сертификатов:
cat public.crt root_ca.crt > fullchain.crt
Выполним команду, в выводе должно быть public.crt: OK
openssl verify -CAfile root_ca.crt public.crt