Неоднократные запросы побудили меня подготовить и опубликовать эту статью по генерации сертификатов для веб сайтов.
И так, если вы используете различные DNS name к примеру:
msi.example.com
doc.example.com
www.example.com
Необходимо внести изменения в конфигурационный файл openssl.cnf
[root@pdc-tst-app-1 ~]# locate openssl.cnf
/etc/pki/tls/openssl.cnf
[root@pdc-tst-app-1 ~]# nano /etc/pki/tls/openssl.cnf
Переходим в нужные разделы и вносим следующие изменения
# first find the [CA_Default] section
[CA_Default]
….
# uncomment or add
copy_extensions = copy
# this causes the ca function to copy the extension fields
# from the CSR and should be done on the host which handles
# the CSRs to create the certificates
# now find [v3_req] section
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = «DNS:msi.example.com,DNS:doc.example.com,DNS:www.example.com»
Вариант
subjectAltName = «DNS:*.example.com»
тоже возможен.
Теперь вы можете сгенерировать запрос Certificate Signing Request (CSR) и подписать его удостоверяющим или корневым центром сертификации.
Method 2
Аналогичным образом изменяем настройки конфигурационного файла openssl.cnf:
# find the [req] section
[req]
….
# add or uncomment
req_extensions = v3_req
####################################################################
[ req ]
default_bits = 2048
default_md = sha1
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
# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
string_mask = utf8only
req_extensions = v3_req # The extensions to add to a certificate request
Это позволит вам добавить все расширения в каждый запрос с обязательным использованием ключа -reqexts «v3_req»
Полагаю, создание сертификата для нескольких DNS имен задача не сложная.
Сконфигурировав файл предлагаю перечень команд для быстрого создания сертификатов для веб сервера
openssl req -nodes -new -newkey rsa:2048 -keyout /ca/req/<pdc-tst-aut.pcptst>.pem -out /ca/req/<pdc-tst-aut.pcptst>.pem -reqexts «v3_req»
Проверка работоспособности сертификата на сайте
openssl s_client -showcerts -state -CAfile /ca/pdc/<pdc-tst-aut.pcptst>.crt
openssl s_client -connect localhost:636 -showcerts -state -CAfile /ca/pdc/<pdc-tst-aut.pcptst>.crt