Pembuatan permintaan sertifikat SSL non-interaktif

15

Apakah ada cara untuk membuat permintaan sertifikat SSL dengan menetapkan semua parameter yang diperlukan pada perintah awal? Saya menulis panel kontrol server web berbasis CLI dan saya ingin menghindari penggunaan harapan ketika mengeksekusi openssljika memungkinkan.

Ini adalah cara khas untuk membuat permintaan sertifikat:

$ 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 []:[email protected]

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

Saya berharap melihat sesuatu seperti ini: (contoh tidak bekerja)

$ 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 [email protected] \
-Company FooBar

Halaman orang baik tidak ada yang mengatakan tentang masalah ini, saya juga tidak dapat menemukan apa pun melalui Google. Haruskah pembuatan permintaan sertifikat SSL menjadi proses interaktif, atau adakah cara untuk menentukan semua parameter dalam satu perintah?

Ini sedang menjalankan distro Linux yang diturunkan dari Debian openssl 1.0.1.

dotancohen
sumber
@ceejayoz: Bagus sekali, terima kasih. א) Di mana opensslbendera - bendera itu didokumentasikan? ב) Untuk apa Google melakukan itu? Terima kasih!
dotancohen
1
Saya mencari Google "skrip penghasil CSR". The -subjparameter didokumentasikan (tidak banyak detail) di openssl.org/docs/apps/req.html .
ceejayoz
Dimungkinkan juga untuk membuat file config, biasanya disebut openssl.cnf.
Sebix

Jawaban:

16

Anda kehilangan dua bagian:

baris subjek, yang dapat disebut sebagai

-subj "/C=US/ST=New Sweden/L=Stockholm /O=.../OU=.../CN=.../emailAddress=..."
  • mengganti ... dengan nilai, X=menjadi kode X509 ( O rganisation / O rganisation U nit / etc ...)

nilai kata sandi, yang dapat disebut sebagai

-passout pass:client11
-passin  pass:client11
  • yang memberikan kata sandi keluaran / input

panggilan saya untuk kunci baru terlihat seperti

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=..."

(Sekarang saya melihatnya, ada dua -new...)

Archemar
sumber
2

Periksa -batchopsi seperti yang dijelaskan dalam dokumen resmi .

mengeluarkan
sumber
2
Terima kasih. Saya melihat bahwa opsi batch ada, tetapi tampaknya tidak ada penjelasan tentang cara menggunakannya.
dotancohen
Mengapa jawaban ini tidak dipilih? Apakah batch bukan solusi yang mungkin untuk masalah ini? Dari namanya, sepertinya memang begitu.
dotancohen
Ini jelas satu-satunya cara untuk melakukan ini dengan opsi -batch, mengapa downvoted saya tidak tahu. Pernyataan "Halaman orang baik tidak ada yang mengatakan tentang masalah ini" adalah salah, karena opsi "-batch".
Keluarkan
Terpilih untuk menyebutkan kumpulan, karena meskipun saya tidak menggunakannya dalam solusi, mungkin berguna di masa depan.
dotancohen
-1

Saya menambahkan perintah openssl reguler saya:

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

Garis ini:

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

Deskripsi:

  • Nama Negara (2 kode huruf) [AU]: PE
  • Negara Bagian atau Provinsi Nama (nama lengkap) [Beberapa Negara]: Lima
  • Nama Daerah (mis. Kota) []: Lima
  • Nama Organisasi (misalnya, perusahaan) [Internet Widgits Pty Ltd]: Acme Inc.
  • Nama Unit Organisasi (misalnya, bagian) []: Departemen TI
  • Nama Umum (mis. Server FQDN atau nama ANDA) []: acme.com

Gunakan "/" seperti pemisah.

JorgeM
sumber
1
Tampaknya jawaban yang diterima sudah mencakup informasi ini. Kalau tidak, terima kasih.
dotancohen