Вопрос или проблема
Я пытаюсь сгенерировать CSR с использованием openssl с альтернативными именами субъектов, однако получаю ошибку, указывающую на отсутствие опций для adext. См. команду ниже.. Я использую OpenSSL 1.0.2k-fips
openssl req -new \
-newkey rsa:2048 -nodes -keyout {domain-name}.key \
-out {domain-name}.csr \
-subj "/C=GB/ST=test/L=/O=test/OU=test/CN={domain-name}.com" \
-addext "subjectAltName = DNS:first.{domain-name}.com,DNS:second.{domain-name}.com,DNS:third.{domain-name}.com,DNS:www.{domain-name}.com.com"
Ошибка подразумевает, что у вас есть опечатка, и вы пропустили d
в команде, когда ввели ее в первый раз (-adext
!= -addext
).
Если вы возьмете ровно то, что вы показали в вопросе, и просто уберете все {}
, чтобы использовать domain-name.com
в качестве домена, это не сработает, потому что L=
требует значения, но если вы добавите значение, то все будет работать нормально:
$ openssl req -new \
> -newkey rsa:2048 -nodes -keyout domain-name.key \
> -out domain-name.csr \
> -subj "/C=GB/ST=test/L=foo/O=test/OU=test/CN=domain-name.com" \
> -addext "subjectAltName = DNS:first.domain-name.com,DNS:second.domain-name.com,DNS:third.domain-name.com,DNS:www.domain-name.com.com"
Генерация RSA-ключа
................+++++
...........................................+++++
запись нового закрытого ключа в 'domain-name.key'
-----
p.s. у вас также есть лишний .com
в конце
Ответ или решение
Ошибка OpenSSL «неизвестный параметр для -adext» часто возникает из-за неправильного написания параметра в командной строке. Рассмотрим причины и возможные решения данной проблемы более подробно.
Причины ошибки
-
Опечатка в параметрах команды: Параметр
-adext
не существует в OpenSSL. Правильный вариант —-addext
. Проверка точности написания командных аргументов очень важна, особенно когда речь идет о параметрах, которые могут повлиять на итоговую команду. -
Версия OpenSSL: Вы используете OpenSSL версии 1.0.2k-fips. Следует отметить, что поддержка параметра
-addext
появилась только в более поздних версиях, начиная с OpenSSL 1.1.0. Эта версия вводит дополнительные возможности для работы с сертификатами, включая поддержку альтернативных имен субъектов (SAN). Ваша версия не поддерживает этот параметр, поэтому вы и получаете ошибку. -
Ошибки в значении параметров: В вашем примере есть также недочет в значении
-subj
. ПолеL=
(город) не имеет значения, что также вызовет ошибку при выполнении команды. Нужно указать действительное значение, например,L=London
. -
Неверный синтаксис SAN: В вашем запросе есть лишняя ‘.com’ в конечной части параметра
subjectAltName
, что также вызывает проблемы. Корректная строка должна выглядеть так:subjectAltName = DNS:first.domain-name.com,DNS:second.domain-name.com,DNS:third.domain-name.com,DNS:www.domain-name.com
.
Решение проблемы
С учетом вышеизложенного, для генерации CSR с использованием альтернативных имен субъекта рекомендую следующее:
-
Обновите OpenSSL: Если это возможно, обновите до версии 1.1.0 или новее, чтобы иметь возможность использовать параметр
-addext
. -
Корректировка команды: Убедитесь, что ваша команда имеет правильный синтаксис. Пример исправленной команды:
openssl req -new \
-newkey rsa:2048 -nodes -keyout domain-name.key \
-out domain-name.csr \
-subj "/C=GB/ST=test/L=London/O=test/OU=test/CN=domain-name.com" \
-addext "subjectAltName = DNS:first.domain-name.com,DNS:second.domain-name.com,DNS:third.domain-name.com,DNS:www.domain-name.com"
Заключение
Ошибки в командной строке OpenSSL могут ворваться в процесс генерации сертификатов, особенно когда дело касается параметров расширений. Убедившись в корректности написания команд и, при необходимости, обновив программное обеспечение, вы сможете избежать подобных проблем в будущем. Используя правильный синтаксис и актуальные версии OpenSSL, процесс генерации CSR с SAN станет простым и эффективным.