Multi-Server Certificates

Неоднократные запросы побудили меня подготовить и опубликовать эту статью по генерации сертификатов для веб сайтов.

И так, если вы используете различные 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

multi_ssl

# 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»

multi_ssl_2

Вариант

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

multi_ssl_3

Это позволит вам добавить все расширения в каждый запрос с обязательным использованием ключа -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