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


15

Чи є спосіб створити SSL запити cert, вказавши всі необхідні параметри в початковій команді? Я пишу на панелі керування веб-сервером на базі CLI і хотів би уникати використання очікувань при виконанні, opensslякщо можливо.

Це типовий спосіб створення запиту cert:

$ 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-cert бути інтерактивним процесом, чи є якийсь спосіб вказати всі параметри в одній команді?

Це в дистрибутиві Linux, який працює під керуванням Debian openssl 1.0.1.



@ceejayoz: Дуже приємно, дякую. א) Де opensslзафіксовані ці прапори? ב) Для чого ви шукали Google, щоб знайти це? Дякую!
dotancohen

1
Я гуглив "Сценарій створення CSR". -subjПараметр документований (не дуже докладно) на openssl.org/docs/apps/req.html .
ceejayoz

Можна також створити конфігураційний файл, який зазвичай називається openssl.cnf.
sebix

Відповіді:


16

вам не вистачає двох частин:

предметний рядок, який можна назвати як

-subj "/C=US/ST=New Sweden/L=Stockholm /O=.../OU=.../CN=.../emailAddress=..."
  • замінюючи ... зі значенням, що X=є кодом X509 ( O організація / O організація U nit / тощо ...)

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

-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 варіанту, чому я спростував поняття. Заява "Сторінка тонкої людини" нічого не сказала з цього приводу "є помилковою через опцію" -atch ".
викинути

Запропонований для згадування партії, так як навіть якщо я не використовував її в рішенні, це може стати в нагоді в майбутньому.
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"

Опис:

  • Назва країни (2 буквений код) [AU]: PE
  • Назва штату чи провінції (повна назва) [Деякі держави]: Ліма
  • Назва місцевості (наприклад, місто) []: Ліма
  • Назва організації (наприклад, компанія) [Internet Widgits Pty Ltd]: Acme Inc.
  • Назва організаційного підрозділу (наприклад, розділ) []: відділ інформаційних технологій
  • Загальна назва (наприклад, FQDN сервера або ВАШЕ ім'я) []: acme.com

Використовуйте "/", як роздільник.


1
Схоже, прийнята відповідь вже включає цю інформацію. Інакше дякую.
dotancohen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.