OpenSSL — полноценная криптографическая библиотека с открытым исходным кодом, которая имеет инструменты, предназначенные для генерации приватных ключей RSA и Certificate Signing Requests (CSR-запросов) и управления сертификатами.
1. Сгенерируйте приватный ключ для Certificate Authority (CA):
openssl genrsa -out root_ca.key 4096
2. Создайте файл конфигурации для CA:
nano ca.cnf
3. Внесите параметры:
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no
[req_distinguished_name]
CN = Local Root CA
[v3_ca]
basicConstraints = critical,CA:TRUE
keyUsage = critical,keyCertSign,cRLSign
subjectKeyIdentifier = hash
4. Выпустите сертификат для CA на 10 лет:
openssl req -x509 -new -key root_ca.key -sha256 -days 3650 \
-out root_ca.crt -config ca.cnf
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, clientAuth
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
4. При необходимости создайте fullchain-сертификат, который хранит в себе всю цепочку сертификатов:
cat public.crt root_ca.crt > fullchain.crt
Выполните команду:
openssl verify -CAfile root_ca.crt public.crt
Если сертификат выпущен успешно, в выводе команды должно быть public.crt: OK