สร้างใบรับรอง SSL แบบไม่โต้ตอบ [ปิด]


28

ฉันต้องการสร้างใบรับรอง SSL แบบไม่โต้ตอบ คือไม่ได้รับพร้อมท์สำหรับข้อมูลใด ๆ

วิธีปกติที่ฉันสร้างใบรับรองจะเป็น:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \
    -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 

ฉันพยายามต่อไปนี้:

openssl genrsa -out server.key 2048
touch openssl.cnf

cat >> openssl.cnf <<EOF
[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = GB
ST = Test State
L = Test Locality
O = Org Name
OU = Org Unit Name
CN = Common Name
emailAddress = test@email.com
EOF

openssl req -x509 -config openssl.cnf -nodes -days 7300 \
    -signkey server.key -out /etc/ssl/private/pure-ftpd.pem 

แต่ฉันยังคงได้รับพร้อมท์สำหรับข้อมูล


1
คุณสามารถให้คำอธิบายหรือผลลัพธ์ของสิ่งที่เกิดขึ้นแทนผลลัพธ์ที่ต้องการได้หรือไม่?
Patrick

ฉันได้รับความช่วยเหลือเป็นopenssl req -x509 -config openssl.cnf -nodes -days 7300 -signkey server.key -out /etc/ssl/private/pure-ftpd.pem
ผลลัพธ์

วิธีที่ดีที่สุดคือให้ผลลัพธ์ข้อผิดพลาดเมื่อคุณพบปัญหา -signkeyฉันคาดเดาปัญหาของคุณได้เป็นเพราะ นี่ไม่ใช่openssl reqตัวเลือกที่ถูกต้องในระบบของฉัน ข้อความแสดงข้อผิดพลาดจะมีข้อความนี้เป็นบรรทัดแรก:unknown option -signkey
Patrick

ดีที่ signkey ควรบอก SSL ให้ใช้คีย์ที่ให้มาอย่างที่ฉันรู้?
TheNiceGuy

"วิธีสร้างใบรับรองปกติ" ของคุณจะไม่แสดงข้อมูลใด ๆ คุณไม่ต้องการให้มันแสดงผลอะไรเลยหรือ 2> /dev/nullการใช้งานแล้ว
wingedsubmariner

คำตอบ:


51

สิ่งที่คุณขาดหายไปคือการรวมเรื่องใบรับรองในการ-subjตั้งค่าสถานะ ฉันชอบสิ่งนี้เพื่อสร้างไฟล์กำหนดค่าเพราะง่ายต่อการรวมเข้ากับเวิร์กโฟลว์และไม่จำเป็นต้องทำความสะอาดหลังจากนั้น

การสร้างคีย์ขั้นตอนเดียวและการสร้าง csr:

openssl req -new -newkey rsa:4096 -nodes \
    -keyout www.example.com.key -out www.example.com.csr \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"

การสร้างใบรับรองที่ไม่มีรหัสผ่านด้วยตนเองในขั้นตอนเดียว:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
    -keyout www.example.com.key  -out www.example.com.cert

คำสั่งเหล่านี้จะไม่พร้อมท์ข้อมูลใด ๆ

ดูคำตอบของฉันสำหรับคำถามที่เหมือนกันนี้กับผู้ใช้ขั้นสูง


O เป็นวิธีแก้ปัญหาที่ดี ทำให้รหัสมีขนาดเล็กลงมาก ขอบคุณ: D
TheNiceGuy

1
ฉันไม่ได้แก้ไขไฟล์ปรับแต่งดั้งเดิมของเขาเพราะฉันคิดว่ามันอาจเป็นมาตรฐานสำหรับใบรับรองที่ซับซ้อนมากขึ้น การกำหนดค่าบางอย่างที่ไม่สามารถแสดงด้วย-subjพารามิเตอร์โดยเฉพาะเมื่อคุณเข้าสู่ส่วนขยาย v3 และพารามิเตอร์ subjectAltName
robbat2

1
นอกจากนี้คุณยังสามารถใช้-batch(โหมดที่ไม่ใช่แบบโต้ตอบ)
Eran H.

หมายเหตุคำสั่งแรกดูเหมือนว่าต้องการให้มีคีย์อยู่ก่อนที่จะสามารถดำเนินการได้โดยที่คำสั่งที่สองจะสร้างคีย์และใบรับรองโดยอัตโนมัติเพราะ-subjเป็น CSR พื้นฐานในบรรทัดที่ถูกต้อง
dragon788

@ dragon788 ขอบคุณที่ชี้ให้เห็น ฉันซ่อมมัน.
bahamat

1

คำสั่งที่คุณต้องการคือ:

openssl req -new -x509 -config openssl.cnf -nodes -days 7300 -key server.key -out /etc/ssl/private/pure-ftpd.pem

การเปลี่ยนแปลงจากเวอร์ชั่นของคุณ:

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