OpenSSL — полноценная криптографическая библиотека с открытым исходным кодом, которая имеет инструменты, предназначенные для генерации приватных ключей RSA и Certificate Signing Requests (CSR-запросов) и управления сертификатами.
Команда для генерации самоподписанного сертификата, при формировании запроса важно указать корректный Common Name (FQDN или IP адрес) сервера.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfsigned.key -out selfsigned.crt
Генерируем приватный ключ для Certificate Authority (CA)
openssl genrsa -out root_ca.key 2048
Выпускаем сертификат для CA на 10 лет.
openssl req -x509 -new -key root_ca.key -days 3650 -out root_ca.crt -subj "/CN=Your Company Root CA"
Генирируем приватный ключ для Сервера
openssl genrsa -out server.key 2048
Создаем запрос на сертифкат для Сервер
openssl req -new -key server.key -subj "/CN=server.your-domain.net" -out server.csr
Создаем файл конфигруации для выпуска сертификата Сервера
nano openssl.cnf
Вносим необходимые параметры в созданный файл конфигурации:
[SAN]
subjectAltName = @alt_names
[alt_names]
DNS.1 = your-domain.net
DNS.2 = *.your-domain.net
IP.1 = XX.XX.XX.XX
Выпускаем сертификат на 5 лет для Сервера
openssl x509 -req -in server.csr -CA root_ca.crt -CAkey root_ca.key -CAcreateserial -out server_cert.crt -days 1825 -extensions SAN -extfile openssl.cnf
При необходимости создаем fullchain-сертификат, который хранит в себе всю цепочку сертификатов.
cat server_cert.crt root_ca.crt > server.crt