Как создать пару ключей ECDSA на основе файла конфигурации OpenSSL?
При создании CSR на основе пар ключей RSA я для удобства использую команду OpenSSL:
openssl req -new -noenc -config 'server.cert.conf' -keyout 'private/server.key.pem' -out 'server.csr.pem'
Мне нравится помещать детали в файл конфигурации, который выглядит примерно так:
[ req ]
prompt = no
utf8 = yes
default_bits = 2048
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = req_extensions
[ req_distinguished_name ]
CN = foo.example.net
[ req_extensions ]
subjectAltName=@alt_names
[ alt_names ]
DNS.1 = foo.example.net
DNS.2 = bar.example.net
Теперь я хочу вместо этого работать с ключами ECDSA, но не нашел способа поместить все необходимые параметры в файл конфигурации. Вместо этого мне нужно вызвать несколько команд OpenSSL и указать некоторые параметры в качестве аргументов команды:
$ openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:secp384r1 -out server.key.params.pem
$ openssl genpkey -paramfile server.key.params.pem -out private/server.key.pem
$ openssl req -new -config 'server.cert.conf' -key 'private/server.key.pem' -out 'server.csr.pem'
Альтернативно, я могу пропустить второй
$ openssl req -new -config 'server.cert.conf' -noenc -newkey 'param:server.key.params.pem' -keyout 'private/server.key.pem' -out 'server.csr.pem'
Есть ли способ переместить всю конкретную конфигурацию алгоритма открытого ключа (например, выбор кривой EC) в файл конфигурации для CSR?
В идеале я хотел бы запустить точно такой же OpenSSL.
Я прочитал все справочные страницы OpenSSL и искал ответы здесь и в других местах в Интернете. Но я пока ничего не нашел.
У меня сложилось впечатление, что OpenSSL довольно непоследователен, когда дело касается параметров CLI и параметров конфигурационного файла. Некоторыми вещами (например, альтернативными именами субъектов) можно управлять только через файлы конфигурации, тогда как другими вещами (например, кривыми EC) можно управлять только через аргументы CLI. Надеюсь, кто-нибудь сможет доказать, что я ошибаюсь насчет последнего.
Вместо этого я пытался использовать некоторые параметры CLI в файле конфигурации, но OpenSSL просто игнорирует их. На данный момент протестировано несколько вариантов этих строк:
default_bits = ec:server.key.params.pem
default_newkey = ec:server.key.params.pem
pkeyopt = ec_paramgen_curve:secp384r1