Подписываем сертификат на несколько доменов

Создаем корневой ключ:

openssl genrsa -out rootCA.key 2048

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

openssl req -x509 -new -key rootCA.key -days 10000 -out rootCA.crt

Ключ для сервера:

openssl genrsa -out example.com.key 2048

Создаем конфиг openssl.cnf:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = MN
localityName = Locality Name (eg, city)
localityName_default = Minneapolis
organizationalUnitName  = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max  = 64
 
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
 
[alt_names]
DNS.1 = example.com
DNS.2 = *.example.com
DNS.3 = example.ru

Запрос на сертификат:

openssl req -new -out example.com.csr -key example.com.key -config openssl.cnf

Проверка:

openssl req -text -noout -in example.com.csr

Подписываем сертификат:

openssl x509 -req -days 9999 -in example.com.csr -CA rootCA.crt -CAkey rootCA.key -out example.com.crt -extensions v3_req -extfile openssl.cnf

Файлы: example.com.crt и example.com.key идут на https сервер.

rootCA.crt распространяется среди пользователей, для импортирования в список доверенных.

Комментарии

При таком файле openssl.cnf

При таком файле openssl.cnf не будет заполнено поле CN, что бы работало правильно, нужно добавить в конфигурационный файл
commonName_default =