ฉันจะสร้างใบรับรอง SSL ที่ลงชื่อด้วยตนเองได้อย่างไร


64

ฉันตั้งค่า SSL บนเว็บเซิร์ฟเวอร์ตอนนี้ฉันต้องการสองไฟล์:

  • ใบรับรอง
  • รหัสใบรับรอง

ฉันจะสร้างใบรับรองที่ลงนามเองเพื่อการทดสอบได้อย่างไร

คำตอบ:


93

อูบุนตูแม้แต่รสชาติที่ 'น้อยที่สุด' มาพร้อมกับssl-certแพ็คเกจที่ติดตั้งไว้ล่วงหน้าซึ่งหมายความว่าคุณไม่จำเป็นต้องทำอะไรเลย

ไฟล์ที่คุณกำลังค้นหาอยู่ในระบบของคุณแล้ว:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


ขั้นสูง:

หากด้วยเหตุผลบางประการที่คุณต้องสร้างใบรับรองใหม่คุณสามารถเรียกใช้

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

หากคุณต้องการเปลี่ยนวันหมดอายุของใบรับรองคุณคุณสามารถจัดการสคริปต์ทำให้ SSL-CERT /usr/sbin/make-ssl-certที่ ประมาณ 124 มีสายคล้ายกับสิ่งนี้:

openssl req -config $TMPFILE -new -x509 -nodes \ 

ที่ที่คุณสามารถเปลี่ยนวันหมดอายุได้โดยเพิ่ม-daysอาร์กิวเมนต์:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

ตัวเลือกเพิ่มเติมสามารถพบได้ในหน้าคู่มือของreq


10
ubuntu-server 12.04 (อิมเมจคลาวด์ AMI) ไม่มีการติดตั้ง ssl-cert เป็นค่าเริ่มต้น แต่เมื่อติดตั้ง ssl-cert แล้ว - /etc/ssl/certs/ssl-cert-snakeoil.pem จะสามารถใช้งานได้โดยอัตโนมัติ
Stann

ทำให้ SSL-CERT ต้องใช้ความยาวของคีย์ (และการตั้งค่าอื่น ๆ ) /usr/share/ssl-cert/ssleay.cnfเพื่อใช้จาก
Tim Smith

ในการพยายามทดสอบเว็บไซต์ในอินสแตนซ์ VM คนจรจัดในท้องถิ่นฉันต้องการให้ Google Chrome ทำหน้าที่เหมือนเป็นใบรับรองปกติโดยสิ้นเชิง ฉันต้องตั้งค่าชื่อโฮสต์ของ VM ให้ตรงกับ URL การทดสอบ (เช่นwww.test.mydomain.com) โดยใช้hostnameคำสั่งใน VM CLI จากนั้นสร้างคีย์ใหม่ตามที่คุณแนะนำด้วย--force-overwriteชื่อสามัญ (CN) ของคีย์นั้นจะตรงกับ URL ทดสอบ ในที่สุดบนเครื่องโฮสต์การติดตั้งคีย์เป็น Trusted Root Certificate Authority (ในการตั้งค่า / ขั้นสูงของ Chrome) ให้แถบที่อยู่สีเขียวที่เป็นเจ้าข้าวเจ้าของ
Buttle Butkus

1
ใบรับรองเก่า 9 ปีของฉันหยุดทำงานกับการอัปเกรดเป็นเดเบียน 10 ดังนั้นmake-ssl-certคำสั่งจะช่วยวันให้ฉัน!
Jayen

23

ดังที่กล่าวไว้แล้วเซิร์ฟเวอร์ของ Ubuntu มาพร้อมกับเครื่องมือที่จำเป็น ทั้งนี้ขึ้นอยู่กับรุ่นของเซิร์ฟเวอร์ของคุณคุณจะต้องมองขึ้นเอกสารที่เฉพาะเจาะจง ผมจะพยายามสรุปกระบวนการสร้างใบรับรองลงนามด้วยตนเองของLTS ปัจจุบัน (12.04)

ก่อนอื่นคุณต้องสร้างคีย์สำหรับคำขอลงนามใบรับรอง (CSR):

openssl genrsa -des3 -out server.key 2048

มันขึ้นอยู่กับคุณที่จะป้อนข้อความรหัสผ่านหรือไม่ หากคุณทำเช่นนั้นทุกครั้งที่คุณเริ่มใช้บริการส่งใบรับรองนั้นคุณจะต้องระบุข้อความรหัสผ่าน Otoh คุณสามารถสร้างคีย์ "ที่ไม่ปลอดภัย" ได้โดยไม่ต้องใส่รหัสผ่านจากรหัสที่ปลอดภัย:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

และตอนนี้คุณจะสร้าง CSR จากกุญแจ ด้วย CSR และคีย์สามารถสร้างใบรับรองที่ลงนามเองได้:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

ขั้นตอนสุดท้ายประกอบด้วยการติดตั้งใบรับรองและคีย์ใน Debian / Ubuntu มักจะอยู่ใน/etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

และในที่สุดแอปพลิเคชันที่ใช้ใบรับรอง / คีย์จะต้องได้รับการกำหนดค่าตามความเหมาะสม

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