Статья на тему создания самоподписного сертификата уже была ранее опубликована. Но буквально наднях встала новая интересная задача — создание самопописного сертификата на несколько доменов. Причина — SSL сертификат для почтового сервера postfix.

Для вэб-серверов все ясно — для этого имеется одно поле (Common Name) для одной записи. Для решения этой проблемы существует X509 V3, которое позволяет в том числе указывать несколько альтернативных имен.

Создаем конфигурационным файл — openssl.cnf

[req]
default_bits = 4096       # Длинна ключа в битах.
default_keyfile = host.key    # Имя файла, в который будет записан закрытый ключ.
encrypt_key = no                    # Нам не нужно шифровать закрытый ключ паролем.
default_md = sha512              # Алгоритм хеша.
x509_extensions = v3_req      # Включаем расширение V3.
prompt = no                            # Не нужно запрашивать данные у пользователя, мы всё пропишем здесь.
distinguished_name = req_distinguished_name         # Имя секции с данными (может быть любым).

[req_distinguished_name]
C = RU     # Country - Двухбуквенный код страны.
L = Murmansk # Locality - Город.
CN = my.semenushkin.ru      # Common Name - Имя домена.
emailAddress = all@semenushkin.ru      # Адрес электронной почты.
# Можно ещё указать следующие поля:
# ST (State - штат, название провинции и т.п.)
# O (Organization - название организации)
# OU (Organizational Unit - название подразделения)

[v3_req]
# Список альтернативных имён. Можно указать прямо здесь, но это не
# удобно, особенно если их много, так что мы указываем название секции
# с именами.
subjectAltName = @alt_names

[alt_names]
# Имена. Можно указать хоть сколько, главное чтобы цифры после точки были разными.
DNS.0 = other.semenushkin.ru
DNS.1 = *.other.semenushkin.ru
DNS.2 = semenushkin.localnet

Создаем сертификат

openssl req -new -x509 -days 3650 -config openssl.cnf -out server.crt

Опции означают следующее:

  • req — команда создание запроса на сертификат
  • -new — создать новый запрос
  • -x509 — создать готовый самоподписанный сертификат, а не только запрос
  • -days 3650 — срок действия сертификата, в данном случае 10 лет
  • -config openssl.cnf — наш файл с настройками
  • -out server.crt — в этот файл будет записан созданный сертификат, без этой опции сертификат будет выведен на стандартный вывод

После выполнения команды в текущей директории будут два новых файла — host.key (закрытый ключ) и server.crt (сертификат). Можно просмотреть сертификат и удостовериться, что все данные корректны:

openssl x509 -in server.crt -noout -text | less
Tagged with:  

3 Responses to Создание самоподписанного SSL-сертификата на несколько доменных имён с помощью openssl

  1. Максим:

    Не могли бы вы описать как этот wildcard SSL сертификат подключить к уже существующим нескольким поддоменам?

  2. Passenger:

    А каком сервисе идет речь? mail, web-server?

  3. aprogrammer:

    Спасибо за статью. Правда, еще можно немного добавить команд по генерации csr,key и crt в разных ситуациях (на лету без вопросом, с готовым ключом, с ключом без пароля, и тп.), как пишут здесь — http://sysadm.pp.ua/internet/pound-apache-nginx-ssl-setup.html

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>