В связи с продлением нашего wildcard-сертификата – необходимо создать CSR из старых сертификатов на некоторых серверах.
Кроме того – в сертификате используются SAN (Subject Alternative Name) – и их требуется перечислить при создании запроса.
Есть два варианта: передать параметры из командной строки – либо настроить OpenSSL.
Содержание
Вариант первый
# openssl req -new -out apache.csr -key /etc/apache2/ssl/apache.key -subj "/C=GB/ST=London/L=Westminster/O=COMPANY LIMITED/OU=company/CN=*.domain.com/subjectAltName=DNS.1=domain.net,DNS.2=dev.author.mini.domain.net,DNS.3=dev.publish.mini.domain.net,DNS.4=qa.author.mini.domain.net,DNS.5=uat.author.mini.domain.net,DNS.6=uat.publish.mini.domain.net,DNS.7=vmu-mini-pub2.domain.net,DNS.8=vmu-mini-auth2.domain.net"
Вариант второй
Редактируем файл /etc/ssl/openssl.cnf
, в котором находим блок [req]
, в котором указываются настрйоки для создания CSR:
... [ req ] default_bits = 1024 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes x509_extensions = v3_ca # The extentions to add to the self signed cert ...
В конце блока добавляем строку:
req_extensions = v3_req
Так мы указали OpenSSL включать блок [v3_req]
при создании CSR.
Находим его:
[ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Добавляем:
subjectAltName = @alt_names
И в блоке [alt_names]
перечисляем SAN-ы:
[alt_names] DNS.1 = kb.domain.com DNS.2 = helpdesk.domain.org DNS.3 = systems.domain.net
Теперь генерируем ключ (или используем имеющийся, как в первом варианте):
# openssl genrsa -out apachem.key 2048 Generating RSA private key, 2048 bit long modulus .+++ ....................+++ e is 65537 (0x10001)
Создаём сам CSR:
# openssl req -new -out apache.csr -key example_com.key -config /etc/ssl/openssl.cnf You are about to be asked to enter information that will be incorporated into your certificate request. ... A challenge password []: An optional company name []:
Файлы готовы:
# ls -l | grep example_com. -rw-r--r-- 1 root root 1106 Nov 19 12:34 apache.csr -rw-r--r-- 1 root root 1675 Nov 19 12:33 apache.key
Проверяем CSR:
# openssl req -text -noout -in apache.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:92:5f:33:97:3d:b9:63:29:6f:72:86:e3:a8:77: ... 50:1d:7e:a7:6f:0c:df:84:46:0a:41:1a:11:d1:da: 47:4f Exponent: 65537 (0x10001) Attributes: Requested Extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment X509v3 Subject Alternative Name: DNS:kb.domain.com, DNS:helpdesk.domain.org, DNS:systems.domain.net Signature Algorithm: sha1WithRSAEncryption 1c:85:df:24:cb:b2:9c:0b:74:61:bb:af:f9:63:40:5f:0e:44: ... 73:88:bd:ef:f9:84:a8:db:b0:23:f0:45:dd:7b:52:b1:c1:18: 3c:62:aa:ec
Главное для нас тут – строки с перечислением имён:
... X509v3 Subject Alternative Name: DNS:kb.domain.com, DNS:helpdesk.domain.org, DNS:systems.domain.net ...
Готово.
Ссылки по теме