On 2015-11-25, Oleksandr Gavenko wrote:

> Пробовал задавать патерны DNS: через переменную окружения, добавив настройку в
> блок "[usr_cert]": 
>
>   subjectAltName=${ENV::sanvar}
>
> Но по:
>
>   $ env sanvar='DNS=myvps.com' openssl ca -days 1000 -config openssl.cnf 
> -cert ca-root-cert.pem -keyfile ca-root-key.pem -out http-server-cert.pem -in 
> http-server-cert.csr
>
> получал ошибку:
>
>   Error Loading extension section usr_cert
>   139621097580176:error:0E06D06C:configuration file 
> routines:NCONF_get_string:no value:conf_lib.c:324:group=CA_default 
> name=email_in_dn
>   139621097580176:error:2207507C:X509 V3 routines:v2i_GENERAL_NAME_ex:missing 
> value:v3_alt.c:531:
>   139621097580176:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in 
> extension:v3_conf.c:95:name=subjectAltName, value=DNS=myvps.com
>
> Эксперименты показали что такая запись работает:
>
>   subjectAltName = email:copy,DNS:${ENV::sanvar}
>
> Я полагаю что подстановка выполняется после парсинга файла и вводить
> синтаксическую структуру через подстановку переменной - нельзя. Хотя в блогах
> есть примеры, в которых приводится указанная конструкция - т.е. это зависит от
> версии openssl.
>
> Но т.к. заранее не знаешь число DNS: параметров - лучше работать через трюк с
> "<(...)" в Bash.

Затупил, в синтаксисе напутал, если поставить знак ":" - то работает:

  $ env sanvar='DNS:myvps.com,DNS:*.myvps.com' openssl ca ...

-- 
Best regards!

Ответить