openssl "не удается найти" различающееся имя " в конфигурации"

Я получаю следующую ошибку от 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

Я понимаю, что это "тема", что он не может найти... однако, я am указав, что:

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 

...что в значительной степени буквально пример в документации.

что я здесь делаю неправильно?

6
задан Thanatos
15.01.2023 8:15 Количество просмотров материала 3343
Распечатать страницу

4 ответа

рядом, как я могу сказать,-config переопределяет какую-то внутреннюю конфигурацию; если вы видите раздел "ПРИМЕРЫ" для man страница для openssl req, показывает пример конфигурационного файла с distinguished_name в нем. По догадке, я добавил следующее в свою конфигурацию:

[req]
…
distinguished_name = req_distinguished_name

[req_distinguished_name]
# empty.

таким образом, вся моя конфигурация выглядела примерно так

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[v3_req]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.*.${DOMAIN}

(обратите внимание, что здесь,${DOMAIN} не является буквальным; вы должны заменить его своим доменным именем DNS; я создаю этот файл в bash скрипт cat >"$OPTIONS_FILE" <<EOF, а затем выше, а затем EOF)

openssl req … -subj <my subject> -config <that file> … затем взял мою тему из командной строки. Для тех, кто заинтересован, вся команда в конечном итоге выглядит так:

openssl req -new \
    -key "$PRIVATE_KEY" \
    -sha256 \
    -config "$OPTIONS_FILE" \
    -subj "/C=US/ST=California/L=San Francisco/O=My Company, Inc./CN=*.*.$DOMAIN/" \
    -out "$CSR_FILENAME"

как из этой публикации, я понимаю, что SHA-1 является deprecated1 для X. 509 сертификатов, следовательно -sha256 (который является недокументированным флагом...), и subjectAltName становится required2, следовательно потребность в конфигурации. Единственное, что понял, что я знайте для генерации CSR передовой практики к вышеупомянутому, что вы должны использовать размер ключа RSA по крайней мере 2048 битов (если вы используете RSA, который я); вы должны укажите размер openssl genrsa команда по умолчанию небезопасна.

1 хотя я и не сломался в то время, когда пишу это, люди считают, что это только вопрос времени. См. "постепенно sunsetting SHA1"

2USING CN для доменное имя больше не рекомендуется; я не уверен, когда / если браузеры планируют отменить это. "Отойдите от включения и проверки строк, которые выглядят как доменные имена в общем имени субъекта.",RFC 6125

примечание: Я менее уверен в "правильном" значении keyUsage.

20
отвечен Thanatos 2023-01-16 16:03

у меня была та же проблема, и я нашел ответ здесь:

https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/

файл конфигурации выглядит так:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = www.company.com
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.company.com
DNS.2 = company.com
DNS.3 = www.company.net 
DNS.4 = company.net 

и затем:

openssl req -new -key private.key -sha256 -nodes -config openssl.conf -out certificate.csr
8
отвечен Miquel 2023-01-16 18:20

для меня эта ошибка, кажется, вызвана неправильным созданием пути при выполнении команды в Windows Server 2012,C:\OpenSSL-Win32\bin

openssl req -new -sha256 -key private.pem -out example.csr

которые выводят неблокирующую ошибку перед запросом pass phare:

не удается открыть C:\Program файлы (x86)\Common Files\SSL/openssl.cnf для чтение, нет s uch файла или каталога

очевидно, что путь неверен из-за неправильной косой черты, поэтому конфигурационный файл должен быть явно добавлен в команду line:

openssl req -new -sha256 -key private.pem -config openssl.cfg -out example.csr
3
отвечен Alexei 2023-01-16 20:37

подобная ошибка:

$ OpenSSL требуе -x509-на-newkey ОГА:4096 -keyout _key.сертификат pem-out.pem-дни 365-узлы Вам будет предложено ввести информацию, которая будет включено в ваш запрос сертификата. Что вы собираетесь enter-это то, что называется отличительным именем или DN. Есть довольно несколько полей, но вы можете оставить некоторые пустые для некоторых полей там будет значение по умолчанию, если ввести '.в поле останется пустым. ----- Название страны (2 буквенный код) [AU]:проблемы с запросом сертификата

(Ubuntu 17.04) означало "вам нужно добавить

-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"

в командную строку " FWIW.

1
отвечен rogerdpack 2023-01-16 22:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх