ไม่น่าไว้วางใจ CA ระดับกลางใน Linux?


18

จากบล็อกนี้

Intermediate CAs เป็นใบรับรองที่ลงนามโดย root CA ที่สามารถลงนามใบรับรองโดยพลการสำหรับเว็บไซต์ใด ๆ

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

เดือนนี้มีสิ่งหนึ่งที่น่าสนใจเกิดขึ้นในเดือนกันยายน 2558: "Blue Coat Public Services Intermediate CA" ลงนามโดย Symantec (ไม่มีใบรับรองที่ลงนามโดย CA นี้ถึงบันทึก CT หรือ Censys แล้ว)

ฉันคิดว่ามันน่าจะเป็นโอกาสที่ดีที่จะเขียนวิธีการเชื่อถือ CA ระดับกลางอย่างชัดเจนซึ่งจะเชื่อถือได้ใน OS X แต่จะไม่หยุด CA รากจากการมอบสื่อกลางใหม่ให้กับองค์กรเดียวกัน แต่ดีกว่าไม่มีอะไร

เมื่อฉันพยายามขั้นตอนในบล็อกในอูบุนตูที่ฉันดาวน์โหลดใบรับรองนี้https://crt.sh/?id=19538258 เมื่อฉันเปิด. crt มันจะนำเข้าสู่ Gnome Keyring แต่ฉันไม่สามารถหาวิธี "ไม่น่าเชื่อถือ" ใบรับรองได้หลังจากนำเข้า

คำตอบ:


8

เพียงเพื่อทำให้เรื่องยากลีนุกซ์มีห้องสมุดมากกว่าหนึ่งแห่งสำหรับการทำงานกับใบรับรอง

หากคุณใช้ NSS ของ Mozilla คุณสามารถเชื่อถือได้อย่างมั่นใจ (คำศัพท์เฉพาะ) ใบรับรองโดยใช้ตัวเลือกของcertutil-t trustargs :

$ certutil -d <path to directory containing database> -M -t p -n "Blue Coat Public Services Intermediate CA"

สำหรับ Firefox <path to directory containing database>มักจะเป็น~/.mozilla/firefox/<???>.profileที่ที่<???>ตัวละครดูสุ่ม (certutil เป็นเช่น. ในแพ็คเกจ libnss3-tools ของ Ubuntu

รายละเอียดมีดังนี้:

-M เพื่อแก้ไขฐานข้อมูล

-t p เพื่อตั้งค่าความไว้วางใจเป็น Prohibited

-n เพื่อดำเนินการกับใบรับรองที่มีชื่อ

แม้แต่ภายใน NSS แอปพลิเคชั่นบางตัวก็ไม่แบ่งปันฐานข้อมูลเดียวกัน ดังนั้นคุณอาจต้องทำซ้ำขั้นตอนนี้ ตัวอย่างเช่นในการทำเช่นเดียวกันสำหรับ Chrome เปลี่ยนไป-d <path>-d sql:.pki/nssdb/

$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"

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

ดังนั้นแอปพลิเคชันใด ๆ ที่ใช้ OpenSSL เพื่อให้การสร้างห่วงโซ่ใบรับรอง (TLS, IPSec ฯลฯ ) จะเชื่อถือห่วงโซ่ที่มีใบรับรอง Blue Coat และไม่มีสิ่งใดที่คุณสามารถทำได้โดยไม่ต้องลบ Root CA ที่ลงนามจาก trust anchor store ของคุณ (ซึ่งโง่มากเมื่อพิจารณาว่าเป็น Symantec Root CA เนื่องจากคุณไม่ไว้ใจอินเทอร์เน็ตครึ่งหนึ่ง) ในขณะที่แอปพลิเคชั่นที่ใช้ NSS สามารถกำหนดค่าได้ละเอียดยิ่งขึ้นเพื่อไม่ไว้วางใจห่วงโซ่ใด ๆ .

ตัวอย่างเช่นฉันเชื่อว่า OpenVPN ใช้ OpenSSL เนื่องจากเป็นห้องสมุดสำหรับใบรับรองดังนั้นพี่ใหญ่อาจฟังทราฟฟิก OpenVPN ของคุณโดยที่คุณไม่รู้ถ้าคุณกำลังเชื่อมต่อกับผู้ให้บริการ VPN เชิงพาณิชย์ที่ใช้ OpenVPN หากคุณกังวลเกี่ยวกับสิ่งนั้นจริงๆให้ตรวจสอบว่า Root CA ของผู้ให้บริการ VPN ในเชิงพาณิชย์ของคุณคือใคร - ถ้าเป็น Symantec / Verisign บางทีอาจถึงเวลาที่คุณควรทิ้งไว้ให้คนอื่น

โปรดทราบว่า SSH ไม่ได้ใช้ใบรับรอง X509 ดังนั้นคุณสามารถเชื่อมต่อและสร้างอุโมงค์โดยใช้ SSH โดยไม่ต้องกังวลเกี่ยวกับการโจมตีของ Blue Coat MITM


ฉันอัปเดตคำถามเพื่อระบุว่าเมื่อฉันคลิกสองครั้งที่ใบรับรองจะถูกนำเข้าสู่พวงกุญแจ gnome ฉันพยายามหาวิธีนำเข้าสู่ Firefox ด้วยคำตอบของฉันด้านล่าง
ฟาเอล

สำหรับ OpenSSL ไม่เพียงแค่ลบใบรับรองออกไปเหมือนกับที่ไม่น่าไว้วางใจใช่ไหม มันสามารถตรวจสอบใบรับรองที่รู้เท่านั้น
Bratchley

1
@Bratchley - จะเกิดอะไรขึ้นหากใบรับรองผู้ต้องสงสัยถูกส่ง (ตามที่ควรจะเป็น) เป็นส่วนหนึ่งของการจับมือ TLS มันจะได้รับความน่าเชื่อถือเว้นแต่จะมีวิธี (เช่นเดียวกับ Mozilla NSS, Windows & OS-X) เพื่อยืนยันว่ามันไม่น่าไว้วางใจเสมอ
garethTheRed

@garethTheRed ฉันอาจจะหายไปบางสิ่งบางอย่าง แต่ถ้าห้องสมุดต้องการใบรับรองที่จะตรวจสอบแล้วจะไม่ทำ CRL หรือลบ root CA ที่เชื่อถือได้แก้ปัญหาได้หรือไม่ ไม่ว่าจะเป็นไคลเอนต์หรือเซิร์ฟเวอร์เซิร์ฟเวอร์ก็ควรจะต้องมีการตรวจสอบ
Bratchley

1
ใช่. Bluecoat ได้รับการออกใบรับรองCAโดย Verisign สำหรับใช้ในอุปกรณ์ที่อยู่กึ่งกลาง OP ขอวิธีเชื่อถือใบรับรองนี้ ดังนั้นนี่เป็นเรื่องเกี่ยวกับการไม่ไว้วางใจใบรับรองรองว่า CA ที่ออกใบรับรองระดับสูงในกรณีนี้จะไม่เพิกถอนเมื่อคุณบอกว่าคุณไม่ต้องการยกเลิกการเชื่อถือรูท (Verisign)
garethTheRed

0

ฉันยังไม่สามารถแสดงความคิดเห็นดังนั้นฉันจะต้องแสดงความคิดเห็นที่นี่ว่าใน Ubuntu Gnome 15.10 เมื่อฉันใช้วิธีการของ @ garethTheRed ฉันจะได้รับ:

~$ certutil -d ~/.mozilla/firefox/<directory>.default -M -t p -n "Blue Coat Public Services Intermediate CA" 
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_BAD_DATABASE: security library: bad database.

~$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_UNRECOGNIZED_OID: Unrecognized Object Identifier.

"บลูโค้ทซิสเต็มส์อิงค์" ไม่ทำงานเช่นกัน

(นี่คือใบรับรองที่ฉันนำเข้า: https://crt.sh/?id=19538258 )


คุณดาวน์โหลดและนำเข้าใบรับรองก่อนหรือไม่
ฟาเอล

ใช่ฉันนำเข้านี้: crt.sh/?id=19538258 (ดูเหมือนว่าฉันสามารถแสดงความคิดเห็นในขณะนี้! :)
Diagon

ฉันคิดว่าคุณสามารถแสดงความคิดเห็นในคำตอบของคุณเท่านั้น ฉันยังไม่ได้ลองขั้นตอนนี้
ฟาเอล

ดูคำตอบของฉันด้านล่าง
ฟาเอล

@raphael - ฉันพยายามแก้ไขด้านล่างโดยแจ้งให้คุณทราบว่า: ในขณะที่ลิงก์ด้านบนอธิบาย "-t p" เป็น "ต้องห้าม (ไม่ไว้วางใจอย่างชัดเจน)" หน้า Ubuntu 15.10 อธิบายว่า "p - peer ที่ใช้ได้" ฉันหวังว่าคุณจะไม่ทำผิด
Diagon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.