OpenSSL подписывает запросы с расширениями

8

Я установил небольшой самоподписанный CA для своей среды разработки. Я хотел бы создать много разных сертификатов сервера с разными свойствами. Мой подход заключается в создании специального раздела расширений для каждого сервера. У меня есть один большой openssl.cnf, который содержит такие разделы:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

Затем, когда я создаю свой CSR с помощью opensslя использую параметры -config myCustomOpenssl.cnf -reqexts server0_http. Когда я смотрю на мой запрос, openssl req -text -noout -in myrequest.csrвсе выглядит идеально.

Однако после того, как я подпишу запрос, разделы «Использование расширенного ключа X509v3» и «Альтернативное имя субъекта X509v3» пропали. Чтобы исправить эту проблему, я также добавил -extfile myCustomOpenssl.cnf -reqexts server0_httpпараметры для подписи вызова openssl.

Это ожидаемое поведение? Я всегда думал, что одного csr-файла должно быть достаточно для создания сертификата по запросу, то есть со всеми его разделами. Моя система работает сейчас так, что я получаю сертификат с отсутствующими разделами. Чтобы получить сертификат, какой я хочу, я должен предоставить csr-файл и соответствующий раздел из файла конфигурации openssl, который я использовал для создания запроса. Это не проблема для моей маленькой установки, но это становится довольно грязным, если я стал большим CA. Это должно быть так или я использую openssl неправильно?

Bananguin
источник

Ответы:

7

Нашел это! То, что я описал, является нормальным ожидаемым поведением openssl. По умолчанию пользовательские расширения не копируются в сертификат.

Чтобы openssl скопировал запрошенные расширения в сертификат, необходимо указать copy_extensions = copyподпись. В ванильных установках это означает, что эту строку необходимо добавить в раздел default_CAв openssl.cnf.

В том, openssl.cnfчто поставляется с (по крайней мере) Centos, строка уже включена в качестве комментария и содержит предупреждение «используйте с осторожностью». Запрашивающие могут злоупотребить этим, чтобы заставить вас выдать сертификат CA, если вы не будете осторожны.

Bananguin
источник