Я получаю следующую ошибку от openssl req
:
unable to find 'distinguished_name' in config
problems making Certificate Request
41035:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/conf/conf_lib.c:329:group=req name=distinguished_name
Насколько я понимаю, это «Субъект», который он не может найти ... однако я уточняю, что:
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=ACME, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
Единственное предложение руководства состоит в том, что файл конфигурации не существует; Я могу cat "$OPTIONS_FILE"
, так что это определенно есть, и этой ошибке не предшествует ошибка, указанная в руководстве, которой предшествует, если бы это было так, поэтому я почти уверен, что openssl
видит файл конфигурации.
Мой конфигурационный файл содержит следующее:
[req]
req_extensions = v3_req
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.example.com
... что в буквальном смысле является примером в документации .
Что я здесь не так делаю?
*.*.example.com
недействительное. (У вас может быть только 1*
, и только в самом левом компоненте.) Это не относится к проблеме здесь, но не используйте c / p вслепую.Ответы:
Насколько я могу судить ,
-config
переопределяется какая-то внутренняя конфигурация; если вы видите раздел «ПРИМЕРЫ» для страницы руководства для openssl req , он показывает пример файла конфигурации сdistinguished_name
ним. Надеюсь, я добавил следующее в мою конфигурацию:Таким образом, весь мой конфиг выглядел примерно так
(Обратите внимание, что здесь
${DOMAIN}
не является буквальным; вы должны заменить его на ваше доменное имя DNS; я создаю этот файл вbash
сценарии сcat >"$OPTIONS_FILE" <<EOF
последующим указанным выше и последующимEOF
)openssl req … -subj <my subject> -config <that file> …
затем взял мою тему из командной строки. Для интересующихся вся команда выглядит так:На момент публикации я понимаю, что SHA-1 устарела - для сертификатов X.509, следовательно
-sha256
(что является недокументированным флагом ...), и subjectAltName становится обязательным², отсюда и необходимость в конфигурации. Единственное, что мне известно о том, что для создания лучшего CSR, описанного выше, я должен использовать размер ключа RSA не менее 2048 бит (если вы используете RSA, которым я являюсь); Вы должны указать размерopenssl genrsa
команды, так как текущее значение по умолчанию небезопасно.«Пока я не сломлен, когда я пишу это, люди чувствуют, что это только вопрос времени. См. «Постепенный закат SHA1»
² Использование CN для доменного имени больше не рекомендуется; Я не уверен, когда / если браузеры планируют отказаться от этого. «Отойдите от включения и проверки строк, которые выглядят как доменные имена в общем имени субъекта.», RFC 6125
Примечание. Я менее уверен в «правильном» значении
keyUsage
.источник
*.*.example.com
недействительна (вы не можете иметь несколько*
s); c / p-ers будьте осторожны.req_distinguished_name
не принимается openssl 1.1.0f, поэтому вы должны иметь хотя быcountryName_default
там (см. Openssl.conf Walkthru ).У меня была такая же проблема, и я нашел ответ здесь:
https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/
Файл конфигурации выглядит следующим образом:
А потом:
источник
req_distinguished_name
Секция может быть оставлен пустым. Для этого нужно указать шаблон меток с необходимыми именами полей, которые могут быть перезаписаны и-subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xx
т. Д., Но не назначать эти значения полей.Для меня эта ошибка, кажется, вызвана неправильным созданием пути при запуске команды в Windows Server 2012,
C:\OpenSSL-Win32\bin
который выводит неблокирующую ошибку перед запросом проходного фаре:
Очевидно, что путь неверен из-за неправильной косой черты, поэтому файл конфигурации должен быть явно добавлен в командной строке:
источник
Эта похожая ошибка:
(Ubuntu 17.04) означало "вам нужно добавить
-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"
в командной строке "FWIW.
источник
Другой возможной проблемой могут быть специальные (невидимые) символы UTF-8. Проверьте ваш файл, используя
источник