Неинтерактивное создание запросов SSL-сертификатов


15

Есть ли способ создания SSL-запросов, указав все необходимые параметры в начальной команде? Я пишу панель управления веб-сервером на основе CLI, и я хотел бы избежать использования ожидаемого при выполнении, opensslесли это возможно.

Это типичный способ создания запроса на сертификат:

$ openssl req -new -newkey rsa:2048 -nodes -sha256 -keyout foobar.com.key -out foobar.com.csr
Generating a 2048 bit RSA private key
.................................................+++
........................................+++
writing new private key to 'foobar.com.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New Sweden
Locality Name (eg, city) []:Stockholm
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Scandanavian Ventures, Inc.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:foobar.com
Email Address []:gustav@foobar.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:FooBar

Я надеюсь увидеть что-то вроде этого: (неработающий пример)

$ openssl req -new -newkey rsa:2048 -nodes -sha256 -keyout foobar.com.key -out foobar.com.csr \
-Country US \
-State "New Sweden" \
-Locality Stockholm \
-Organization "Scandanavian Ventures, Inc." \
-CommonName  foobar.com \
-EmailAddress gustav@foobar.com \
-Company FooBar

Прекрасная справочная страница ничего не сказала по этому поводу, и я не смог ничего найти через Google. Должна ли генерация запроса сертификата SSL быть интерактивным процессом или есть какой-то способ указать все параметры в одной команде?

Это на дистрибутиве Linux, основанном на Debian openssl 1.0.1.



@ceejayoz: Очень хорошо, спасибо. א) Где эти opensslфлаги задокументированы? ב) Что вы гуглили, чтобы найти это? Спасибо!
— Dotancohen

1
Я погуглил "CSR генерировать скрипт". -subjПараметр документирован (не очень подробно) на openssl.org/docs/apps/req.html .
— ceejayoz

Также возможно создать файл конфигурации, обычно называемый openssl.cnf.
— Себикс

Ответы:


16

вам не хватает двух частей:

сюжетная линия, которую можно назвать

-subj "/C=US/ST=New Sweden/L=Stockholm /O=.../OU=.../CN=.../emailAddress=..."
  • замена ... со значением, X=будучи Х509 код ( O rganisation / O rganisation U нит / и т.д. ...)

значение пароля, которое можно назвать

-passout pass:client11
-passin  pass:client11
  • которые дают пароль ввода / вывода

мой призыв к новому ключу выглядит

openssl genrsa -aes256 -out lib/client1.key -passout pass:client11 1024
openssl rsa -in lib/client1.key -passin pass:client11 -out lib/client1-nokey.key

openssl req -new -key lib/client1.key -subj req -new \
    -passin pass:client11 -out lib/client1.csr \
    -subj "/C=US/ST=New Sweden/L=Stockholm/O=.../OU=.../CN=.../emailAddress=..."

(теперь, когда я это вижу, есть два -new...)


2

Проверьте -batchвариант, как описано в официальных документах .


2
Спасибо. Я вижу, что пакетный вариант существует, но, похоже, нет объяснения, как его использовать.
— dotancohen

Почему этот ответ был отвергнут? Разве партия не является возможным решением проблемы? Из названия это звучит так, как будто это может быть.
— dotancohen

Это определенно единственный способ сделать это с опцией -batch, почему понизить рейтинг я понятия не имею. Утверждение «Прекрасной справочной странице нечего было сказать по этому вопросу» является ложным из-за опции «-batch».
— извлечь

Голосовали за упоминание пакета, поскольку, хотя я и не использовал его в решении, оно может пригодиться в будущем.
— dotancohen

-1

Я добавляю к своей обычной команде openssl:

openssl req -x509 -nodes -days 7300 -newkey rsa: 2048 -keyout /etc/ssl/private/key.pem -out /etc/ssl/private/cert.pem

Эта строка:

-subj "/C=PE/ST=Lima/L=Lima/O=Acme Inc. /OU=IT Department/CN=acme.com"

Описание:

  • Название страны (двухбуквенный код) [AU]: PE
  • Название штата или провинции (полное название) [Some-State]: Лима
  • Название населенного пункта (например, город) []: Лима
  • Название организации (например, компания) [Internet Widgits Pty Ltd]: Acme Inc.
  • Название подразделения (например, раздел) []: ИТ-отдел
  • Общее имя (например, полное доменное имя сервера или ваше имя) []: acme.com

Используйте "/" как разделитель.


1
Кажется, что принятый ответ уже включает эту информацию. В противном случае, спасибо.
— dotancohen
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.