การเพิ่มใบรับรองแบบลงนามด้วยตนเองใน“ รายการที่เชื่อถือได้”


87

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

ฉันใช้ Ubuntu 12.04 ฉันจะใช้ใบรับรองและเชื่อถือได้ทั่วโลกเพื่อให้เบราว์เซอร์ (Google Chrome), ยูทิลิตี้ CLI (wget, curl) และภาษาการเขียนโปรแกรม (Python, Java, ฯลฯ ) เชื่อถือการเชื่อมต่อกับhttps://mysite.comโดยไม่ต้องถาม คำถาม?


TLS ทั้งหมดควรเป็น vectored ผ่าน OpenSSL ดังนั้นจึงเป็นที่สำหรับค้นหาเอกสาร ในกรณีนี้: gagravarr.org/writing/openssl-certs/…ดูมีประโยชน์
msw

คำตอบ:


87

คำตอบง่ายๆสำหรับเรื่องนี้ก็คือแอพพลิเคชั่นแต่ละตัวจะจัดการกับมันต่างกัน

นอกจากนี้ OpenSSL และ GNUTLS (ไลบรารีการประมวลผลการรับรองที่ใช้กันอย่างแพร่หลายที่สุดที่ใช้ในการจัดการใบรับรองที่ลงนามแล้ว) ก็มีพฤติกรรมที่แตกต่างกันไปในการรักษา certs ซึ่งทำให้ปัญหาซับซ้อนยิ่งขึ้น ระบบปฏิบัติการใช้กลไกต่าง ๆ เพื่อใช้ "root CA" ที่เว็บไซต์ส่วนใหญ่ใช้

นอกเหนือจากนั้นให้ Debian เป็นตัวอย่าง ติดตั้งca-certificatesแพ็คเกจ:

apt-get install ca-certificates

จากนั้นคุณคัดลอกครึ่งสาธารณะของใบรับรอง CA ที่ไม่น่าเชื่อถือของคุณ (ที่คุณใช้ในการลงนาม CSR ของคุณ) ลงในไดเรกทอรีใบรับรอง CA (เป็น root):

cp cacert.pem /usr/share/ca-certificates

และรับมันไปสร้างไดเรกทอรีใหม่โดยมีใบรับรองของคุณรวมอยู่ด้วยรันเป็นรูท:

dpkg-reconfigure ca-certificates

และเลือกaskตัวเลือกเลื่อนไปที่ใบรับรองของคุณทำเครื่องหมายเพื่อรวมและเลือกตกลง

เบราว์เซอร์ส่วนใหญ่ใช้ฐานข้อมูล CA ของตัวเองและcertutilต้องมีการใช้เครื่องมือต่าง ๆ เพื่อแก้ไขเนื้อหา (บน Debian ที่จัดทำโดยlibnss3-toolsแพ็คเกจ) ตัวอย่างเช่นเมื่อใช้ Chrome คุณสามารถเรียกใช้บางสิ่งตามบรรทัดต่อไปนี้:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefox จะอนุญาตให้คุณเรียกดูใบรับรองบนดิสก์รู้จักไฟล์ใบรับรองแล้วอนุญาตให้คุณนำเข้ารายการ Root CA

คำสั่งอื่น ๆ ส่วนใหญ่เช่นcurlสวิตช์บรรทัดคำสั่งที่คุณสามารถใช้เพื่อชี้ไปที่ CA ของคุณ

 curl --cacert  /path/to/CA/cert.file https://...

หรือปล่อยการตรวจสอบ SSL ทั้งหมด

 curl --insecure https://...

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


นอกจากนี้ตามที่ระบุไว้ที่นี่การเพิ่มใบรับรอง CA สำหรับ Java นั้นเป็นเรื่องที่แยกจากกัน
Naftuli Kay

2
หลังจากคัดลอกใบรับรองไปยัง / usr / share / ca-certificate ฉันไม่เห็นในdpkg-reconfigure ca-certificatesรายการ ผมทำอะไรผิดหรือเปล่า?
Georges Dupéron

18
@ GeorgesDupéronที่เกิดขึ้นกับฉัน ฉันมันแก้ไขได้โดยการเปลี่ยนชื่อใบรับรองจากไปwhatever.pem whatever.crt
สวัสดีชาวโลก


2
FYI ฉันมีไฟล์ใบรับรองชื่อ.cerและไม่ได้ผล ฉันต้องเปลี่ยนชื่อใหม่เพื่อ.crtให้เป็นที่รู้จัก
Tri Nguyen

53

วิธีการแบบไม่โต้ตอบ

สำหรับใช้ในบริบทที่ไม่มีการโต้ตอบ (เช่นสูตรอาหารของพ่อครัว) คุณสามารถใช้ลำดับต่อไปนี้

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • ผ่านการทดสอบและใช้งานได้บน debian 5/6 & Ubuntu 14.04
  • สำหรับข้อมูลเพิ่มเติมโปรดดู man update-ca-certificates

วิธีการนี้เป็นที่ต้องการมากกว่า @ วิธี Drav ของตั้งแต่/usr/share/ถูกสงวนไว้สำหรับไฟล์มักจะเพิ่มโดย OS apt-get/


4
เป็นการดีกว่าที่จะคัดลอกไฟล์ไป/usr/local/share/ca-certificates/ตามที่กล่าวไว้ใน man pages
ortang

3
FYI A ต้องเป็น.crtฉันพบ.certว่ามันถูกเพิ่มเข้ามา แต่ไม่ได้ช่วย
KCD

6

บน Fedora 23 เพิ่ม .pem หรือแฟ้ม .der ไปและเรียกใช้/etc/pki/ca-trust/source/anchors/sudo update-ca-trust extract

ดูman update-ca-trustรายละเอียดเช่นว่าจะใช้ / etc หรือ / usr


4

ใน centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

เมื่อใดที่ฉันopenssl connectควรจะระบุโฟลเดอร์ / จุดยึดนี้ ฉันยังคงได้รับข้อผิดพลาด "self signed certs
Janac Meena

2

Non Approach Approach (Oct'18)
สำหรับระบบที่ใช้เดเบียนเมื่อไม่นานมานี้

มีความแตกต่างระหว่างการเพิ่มใบรับรองในร้านค้าของโฮสต์และเปิดใช้งานเพื่อให้แอปพลิเคชันใช้ประโยชน์เหล่านั้นจริงๆ ใบรับรองที่มีอยู่ในร้านไม่จำเป็นต้องใช้ (แม้ว่าฉันต้องยอมรับว่ายังมีแพคเกจจำนวนมากที่ได้รับมันผิดอยู่ดี)
อาจทำให้เกิดความสับสนได้เมื่อคุณติดตั้งแพคเกจที่พิจารณา/etc/ca-certificate.confและปฏิเสธที่จะใช้ใบรับรองของคุณ ถูกเพิ่มโดยไม่มีข้อผิดพลาด คุณจำเป็นต้องบอกupdate-ca-certificatesอย่างชัดเจน (ไม่เพียง แต่คัดลอก) เปิดใช้งานใบรับรองโดยเพิ่มหรือ/etc/ca-certificate.conf/etc/ca-certificate/update.d

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

ตอนนี้ที่นี่จะเกิดความสับสนเนื่องจากมีวิธีเชื่อถือใบรับรองโดยปริยายโดยใช้เส้นทางอื่น:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.