เชื่อถือใบรับรอง PEM ที่ลงชื่อด้วยตนเอง


23
  1. ฉันตั้งค่าพร็อกซีเซิร์ฟเวอร์ด้วย SSL โดยใช้ใบรับรอง PEM ขณะนี้มีเครื่องของฉันสองเครื่องที่ฉันต้องการเชื่อถือใบรับรองนี้โดยอัตโนมัติ (โดยไม่ต้องมีเว็บเบราว์เซอร์บ่น) ฉันจะติดตั้งใบรับรอง PEM ในแต่ละเครื่องได้อย่างไร

  2. นอกจากนี้สิ่งที่แนะนำเพิ่มเติม: การสร้างใบรับรองที่ลงนามด้วยตนเองหรือการเชื่อมใบรับรอง snakeoil?

คำตอบ:


10

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

เบราว์เซอร์จำนวนมากที่มาพร้อมกับใบรับรอง CA ทั่วไปเช่น Verisign, Thawte เป็นต้นเบราว์เซอร์ส่วนใหญ่อนุญาตให้คุณนำเข้า CA ใหม่ลงในรายการ CA ที่เชื่อถือได้นี้

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

ฉันเคยxcaทำแบบนี้มาก่อน มีเทมเพลตสำหรับเซิร์ฟเวอร์ CA และ HTTP ขั้นตอนนี้คือ:

  • สร้างคีย์ส่วนตัวสำหรับ CA ของคุณ
  • สร้าง CA ที่ลงนามเองโดยใช้คีย์นี้โดยใช้เทมเพลต "CA"
  • สร้างไพรเวตคีย์สำหรับพร็อกซีเซิร์ฟเวอร์ของคุณ
  • สร้าง "คำขอลงนามใบรับรอง" (CSR) โดยใช้คีย์ที่สองอ้างอิง CA ที่คุณเพิ่งสร้าง
  • "ลงชื่อ" CSR และคุณจะมีใบรับรองเซิร์ฟเวอร์พรอกซีซึ่งอ้างอิง CA ของคุณเอง

จากนั้นคุณจะต้องส่งออก (เป็นไฟล์หากใช้xca) ใบรับรอง CA (แต่ไม่รวมรหัสส่วนตัวของหลักสูตร) .pemจะถูกสร้างขึ้น .crtแต่คุณสามารถเปลี่ยนนามสกุลไป เมื่อผู้ใช้คลิกที่นั้นจะมีการเสนอให้ติดตั้งบน Firefox และ Internet Explorer และเบราว์เซอร์หลักอื่น ๆ เท่าที่การติดตั้ง. crt นี้โดยอัตโนมัติคุณสามารถ:

  • ใช้นโยบายกลุ่มใน IE
  • นำผู้ใช้ไปยังหน้าบทนำเพื่อขอให้พวกเขาดาวน์โหลด / ติดตั้ง. crt หากพวกเขาต้องการหลีกเลี่ยงคำเตือน

จากนั้นคุณสามารถใช้ฟังก์ชั่นการส่งออกในใบรับรองเซิร์ฟเวอร์ HTTP (ส่งออกทั้งรหัสส่วนตัวและใบรับรองสำหรับฝั่งเซิร์ฟเวอร์) เพื่อวางบนพร็อกซีเซิร์ฟเวอร์ของคุณ


17
  1. คัดลอกใบรับรองของคุณไปยัง/etc/ssl/certsระบบเป้าหมาย จากนั้นสร้าง symlink โดยใช้แฮชที่สร้างโดยคำสั่งopenssl x509 -noout -hash -in ca-certificate-fileแทนที่ca-certificate-fileด้วยชื่อใบรับรองของคุณ ใบรับรองของคุณควรได้รับการยอมรับจากทุกโปรแกรมโดยไม่มีที่เก็บใบรับรองของตนเอง

    สำหรับโปรแกรมที่มีที่เก็บใบรับรอง (เบราว์เซอร์ Java และอื่น ๆ ) คุณจะต้องนำเข้าใบรับรอง

  2. การสร้างใบรับรองที่ลงชื่อด้วยตนเองหรือลงนามของคุณเองนั้นดีที่สุด

    คุณอาจต้องการติดตั้งtinyca2และสร้างผู้ออกใบรับรองของคุณเอง คุณสามารถนำเข้าใบรับรองหน่วยงานผู้ออกใบรับรองตามรายละเอียดในขั้นตอนด้านบน สร้างและปรับใช้ใบรับรองที่ลงนามสำหรับแอปพลิเคชันของคุณ

    แจกจ่ายใบรับรอง CA ของคุณให้กับผู้ใช้ที่ต้องเชื่อถือใบรับรองของคุณ คุณอาจต้องให้ข้อมูลเกี่ยวกับวิธีนำเข้าใบรับรองไปยังพวกเขา คำเตือน: ถ้าพวกเขาทำเช่นนี้คุณจะกลายเป็น CA ที่ไว้ใจได้อีกตัวหนึ่ง

    เครื่องมือมากมายสามารถกำหนดค่าให้เชื่อถือใบรับรองที่ลงนามด้วยตนเองหรือใบรับรองด้วย CA ที่ไม่น่าเชื่อถือ นี่เป็นการกระทำเพียงครั้งเดียว สิ่งนี้อาจมีความปลอดภัยมากกว่าที่ยอมรับใบรับรอง CA จากหน่วยงานที่ไม่ปลอดภัยมีเพียงใบรับรองที่ยอมรับเท่านั้นที่เชื่อถือได้


สิ่งนี้จะทำให้เฉพาะเจาะจงมากขึ้น? ตัวอย่างเช่น: โฮสต์ A ส่งจดหมายไปยังโฮสต์ B และบ่นเกี่ยวกับการไม่สามารถยืนยันตัวตนของ B. บนโฮสต์ B เราได้สร้างใบรับรองที่ลงชื่อด้วยตนเอง: /etc/ssl/certs/ssl-cert-snakeoil.pem(นี่คือสิ่งที่แพ็คเกจ Debian ssl-certสร้างขึ้นสำหรับคุณ) เราคัดลอกไปยังโฮสต์ A และเรียกมันว่า/etc/ssl/certs/host-B.pem(เนื่องจากโฮสต์นี้อาจมีssl-cert-snakeoil.pem) ln -s /etc/ssl/certs/host-B.pem $(openssl x509 -noout -hash -in /etc/ssl/certs/host-B.pem)จากนั้นเราจะดำเนินการ
Alex Schröder

1
@ AlexSchröderฉันได้แก้ไขด้านบนแล้ว พวกเขาไม่ควรนำเข้าใบรับรอง snakeoil ของคุณ แต่ถ้าคุณตั้งค่า CA ของคุณเองมันก็สมเหตุสมผลสำหรับพวกเขาที่จะนำเข้า CA ของคุณ ฉันยังไม่ได้ระบุปัญหาความน่าเชื่อถือระหว่างเซิร์ฟเวอร์ SMTP ลูกค้าส่วนใหญ่สามารถบอกได้ว่าจะเชื่อถือใบรับรองแต่ละใบ
BillThor

ขอบคุณ ฉันพบคำถามนี้เมื่อฉันกำลังมองหาคำอธิบายสำหรับรายการบันทึกที่ฉันได้รับ คำอธิบายที่ฉันพบคือที่ที่จะส่งจดหมายไปยัง B, A จะรายงานว่ามันเป็นไปไม่ได้ที่จะตรวจสอบตัวตนของ B.
อเล็กซ์Schröder

นี่คือสิ่งที่ฉันกำลังมองหา! -- ขอขอบคุณ! ตอนนี้ฉันสามารถใช้ davfs เพื่อติดตั้ง webDAV ที่ปลอดภัยของฉันได้โดยไม่ต้องรำคาญอะไรมาก
Wyatt8740

13

ใน Debian และ Ubuntu คุณต้องคัดลอกcertificate.pemไปและเรียกใช้แล้ว/usr/local/share/ca-certificates/certificate.crt ถูกจัดการโดยคำสั่งนั้นdpkg-reconfigure ca-certificates/etc/ssl/certs

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