Статья на тему создания самоподписного сертификата уже была ранее опубликована. Но буквально наднях встала новая интересная задача – создание самопописного сертификата на несколько доменов. Причина – 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 – в этот файл будет записан созданный сертификат, без этой опции сертификат будет выведен на стандартный вывод
После выполнения команды в текущей директории будут два новых файла – server.key (закрытый ключ) и server.crt (сертификат). Можно просмотреть сертификат и удостовериться, что все данные корректны:
openssl x509 -in server.crt -noout -text | less