การสร้างการร้องขอใบรับรอง 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 ต้องเป็นกระบวนการแบบโต้ตอบหรือมีวิธีการระบุพารามิเตอร์ทั้งหมดในคำสั่งเดียวหรือไม่?

นี้อยู่บน Debian ที่ได้มาจาก Linux distro openssl 1.0.1ทำงาน



@ceejayoz: ดีมากขอบคุณ א) opensslเอกสารสถานะเหล่านั้นอยู่ที่ไหน ב) คุณ google ค้นหาอะไรเพื่อพบสิ่งนั้น ขอขอบคุณ!
dotancohen

1
ฉัน googled "CSR สร้างสคริปต์" -subjพารามิเตอร์เป็นเอกสาร (ไม่ได้อยู่ในรายละเอียดมาก) ที่openssl.org/docs/apps/req.html
ceejayoz

นอกจากนี้ยังเป็นไปได้ที่จะสร้างไฟล์ config openssl.cnfซึ่งโดยปกติจะเรียกว่า
sebix

คำตอบ:


16

คุณหายไปสองส่วน:

บรรทัดเรื่องซึ่งสามารถเรียกว่าเป็น

-subj "/C=US/ST=New Sweden/L=Stockholm /O=.../OU=.../CN=.../emailAddress=..."
  • แทนที่ ... ด้วยค่าX=เป็นรหัส X509 ( O rganisation / O rganisation U nit / etc ... )

ค่ารหัสผ่านซึ่งสามารถเรียกว่าเป็น

-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

เป็นวิธีเดียวที่จะทำเช่นนี้ได้ด้วยตัวเลือก - แบตช์ทำไม downvote ฉันไม่มีความคิด คำสั่ง "หน้าคนดีไม่มีอะไรจะพูดในเรื่อง" เป็นเท็จเพราะตัวเลือก "-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"

รายละเอียด:

  • ชื่อประเทศ (รหัสตัวอักษร 2 ตัว) [AU]: PE
  • ชื่อรัฐหรือจังหวัด (ชื่อเต็ม) [บางรัฐ]: ลิมา
  • ชื่อท้องถิ่น (เช่นเมือง) []: ลิมา
  • ชื่อองค์กร (เช่น บริษัท ) [Internet Widgits Pty Ltd]: Acme Inc.
  • ชื่อหน่วยองค์กร (เช่นส่วน) []: แผนกไอที
  • ชื่อสามัญ (เช่นเซิร์ฟเวอร์ FQDN หรือชื่อของคุณ) []: acme.com

ใช้ "/" เช่นตัวคั่น


1
ดูเหมือนว่าคำตอบที่ยอมรับมีข้อมูลนี้อยู่แล้ว มิฉะนั้นขอบคุณ
dotancohen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.