จะทำให้ใบรับรอง CA ของระบบที่ไว้วางใจ Firefox ได้อย่างไร?


29

ผู้ดูแลระบบเครือข่ายของเราเปิดใช้งานการตรวจสอบ HTTPS บนไฟร์วอลล์ / เราเตอร์ของเรา สำหรับผู้ใช้ IE สิ่งนี้ดีเพราะ certs ได้รับการเผยแพร่ผ่าน Active Directory สำหรับเครื่องที่เข้าร่วมกับโดเมน อย่างไรก็ตามเรามีผู้ใช้ Firefox จำนวนมากซึ่งขณะนี้กำลังโยนข้อผิดพลาดของใบรับรองไปยังทุกไซต์ HTTPS

Firefox ใช้ CA store ของตัวเองและพวกเขาก็ภาคภูมิใจเช่นกัน มีวิธีใดที่จะให้ Firefox ไว้วางใจที่เก็บใบรับรองระบบโดยปริยาย ฉันเห็นโพสต์มากมายเกี่ยวกับวิธีการทำเช่นนี้ใน Linux แต่ไม่มีอะไรสำหรับ Windows

ฉันสงสัยว่าโพสต์นี้จะเป็นไปไม่ได้ แต่โพสต์นั้นเกือบ 4 ปีแล้ว

คำตอบ:


46

ตั้งแต่ Firefox 49 มี การรองรับใบรับรอง Windows CA บางส่วนและการสนับสนุน Active Directory ที่ให้ใบรับรองระดับองค์กรตั้งแต่ Firefox 52 นอกจากนี้ยังรองรับใน macOS เพื่ออ่านจาก Keychain ตั้งแต่รุ่น 63

เนื่องจาก Firefox 68 คุณลักษณะนี้เปิดใช้งานตามค่าเริ่มต้นในรุ่น ESR (องค์กร) แต่ไม่ได้อยู่ในรุ่นด่วน (มาตรฐาน)

คุณสามารถเปิดใช้งานคุณลักษณะนี้สำหรับ Windows และ macOS about:configโดยสร้างค่าบูลีนนี้:

security.enterprise_roots.enabled

และตั้งเป็น trueและตั้งค่าให้

สำหรับ GNU / Linux สิ่งนี้มักจัดการโดย p11-kit-trust และไม่จำเป็นต้องตั้งค่าสถานะ

การปรับใช้ระบบการกำหนดค่าความกว้าง

ตั้งแต่ Firefox 64 มีวิธีใหม่และวิธีที่แนะนำโดยใช้นโยบายซึ่งมีเอกสารไว้ที่https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox

สำหรับเวอร์ชันดั้งเดิมโฟลเดอร์การติดตั้ง Firefox สามารถเรียกคืนได้จากการลงทะเบียน Windows จากนั้นไปที่defaults\pref\ไดเรกทอรีย่อยและสร้างไฟล์ใหม่ด้วยรายการต่อไปนี้:

/* Allows Firefox reading Windows certificates */    
pref("security.enterprise_roots.enabled", true);

บันทึกด้วย.jsส่วนขยายเช่นtrustwincerts.jsและเริ่ม Firefox ใหม่ รายการจะปรากฏในabout:configสำหรับผู้ใช้ทั้งหมด

การปรับใช้ระบบใบรับรอง Windows กว้าง

ใน Firefox ตั้งแต่ 49 ถึง 51 จะสนับสนุนเฉพาะที่เก็บ "รูท" ตั้งแต่ Firefox 52 มันรองรับร้านค้าอื่น ๆ รวมถึงร้านค้าที่เพิ่มจากโดเมนผ่านทาง AD

นี่เป็นขอบเขตเล็กน้อย แต่อธิบายว่าเป็นร้านค้าใบรับรองเพียงแห่งเดียวที่รองรับ Firefox สำหรับรุ่น 49 ถึง 51 หรือเพียงเพื่อการทดสอบในท้องถิ่น เนื่องจากสิ่งนี้ปรับใช้สำหรับผู้ใช้เครื่องโลคัลทั้งหมดจึงต้องการสิทธิ์ผู้ดูแลระบบในหน้าต่าง CMD / PowerShell ของคุณหรือในสคริปต์การปรับใช้อัตโนมัติของคุณเอง:

certutil -addstore Root path\to\cafile.pem

สิ่งนี้อาจทำได้จาก Management Console โดยการคลิกที่หน้าต่างหลายบานหากคุณต้องการวิธีเมาส์ ( วิธีการ: ดูใบรับรองด้วย MMC Snap-In )


คุณรู้หรือไม่ว่าที่เก็บใบรับรองใดที่จะต้องโหลดใบรับรองเพื่อให้ทำงานได้
ETL

@ETL ฉันได้ทำการทดสอบกับ trust store ของระบบเครื่องจักรท้องถิ่นเท่านั้นซึ่งดีสำหรับการทำงานกับบัญชีเครื่องทั้งหมด ตามหน้า Mozilla wiki ที่กล่าวถึงในการตอบกลับพวกเขาคาดหวังว่าจะได้รับการสนับสนุนใบรับรองเต็มรูปแบบ (รวมถึง AD certs) ใน Firefox 52 โดยค่าเริ่มต้น certmgr.msc แสดงผู้ใช้ certstore แต่คุณต้องเพิ่มลงใน certstore ของเครื่องท้องถิ่น คุณสามารถใช้ Windows certutil (อย่าสับสนกับ Mozilla NSS certutil) เพื่อปรับใช้

หาเรื่อง ฉันมีใบรับรองอยู่ในสถานที่ (ฉันกำลังเพิ่มพวกเขาโดยใช้นโยบายกลุ่มไปที่ผู้ออกใบรับรองหลักที่เชื่อถือได้ของเครื่องท้องถิ่น) ฉันเปิดใช้งานตัวเลือก Firefox แต่ใบรับรองยังไม่ได้ใช้กับ FF 50.1 นั่นคือคุณมีคอนเสิร์ตหรือไม่?
ETL

2
รายการตรวจสอบคือ: 1: Firefox ไม่แสดงรายการใบรับรอง Windows ในขั้นสูง -> ใบรับรอง แต่ควรใช้งานได้ตามที่เชื่อถือได้ 2: ต้องสร้างใบรับรองเซิร์ฟเวอร์ด้วย CA นั้นโดยใช้ CA โดยตรงเนื่องจากใบรับรองเซิร์ฟเวอร์จะไม่ทำงาน 3: ต้องสร้างใบรับรองเซิร์ฟเวอร์อย่างถูกต้องโดยสืบทอดนโยบาย CA สำหรับชื่อสำรองอื่น 4: ในกรณีที่ certstore ไม่ถูกต้องลองใช้ certutil ของ Microsoft ฉันทำสิ่งนี้: ในหน้าต่างผู้ดูแลระบบ cmd: certutil -addstore Root path\to\cafile.pem(หรือ. crt)

1
นี้ยังเป็นที่กล่าวถึงในMozilla วิกิพีเดีย
Franklin Yu

2

คุณได้พิจารณาการปรับใช้ใบรับรองเหล่านั้นไปยัง Firefox เช่นเดียวกับที่เก็บใบรับรอง Windows หรือไม่

https://wiki.mozilla.org/CA:AddRootToFirefox ให้รายละเอียดเกี่ยวกับตัวเลือก:

  1. แก้ไขฐานข้อมูลใบรับรองโดยตรงโดยใช้ certutilปรับเปลี่ยนฐานข้อมูลใบรับรองโดยตรงโดยใช้
  2. ใช้คุณสมบัติ autoconfig ของ Firefox โดยวางไฟล์จาวาสคริปต์ไว้ข้างไบนารีเพื่อเพิ่มใบรับรอง:

    var certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB);
    var certdb2 = certdb;
    try {
        certdb2 = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB2);
    } catch (e) {}
    cert = "MIIHPT...zTMVD"; // This should be the certificate content with no line breaks at all.
    certdb2.addCertFromBase64(cert, "C,C,C", "");
    
  3. แจกจ่ายไฟล์ฐานข้อมูลใบรับรองโดยตรง
  4. แพ็คเกจ Firefox สำหรับการติดตั้งรวมถึงใบรับรองในการแจกจ่ายของคุณ
  5. ใช้CCK2เพื่อสร้างส่วนขยายที่เพิ่มใบรับรอง

1

ไม่มีวิธีจัดการที่ดีที่บังคับให้ใช้ที่เก็บระบบ แต่มีวิธีแก้ไขปัญหาที่ดี

บิตของสคริปต์ด้านล่างทำงานได้ดีในการเข้าสู่ระบบ / ออกจากระบบ

Stop-Process -processname firefox

$DBPath="\\yourserver\yourshare\cert8.db"
$FirefoxProfiles=Get-ChildItem $Env:appdata\Mozilla\Firefox\Profiles     
$DB=Get-Item $DBPath    
ForEach ( $Profile in $FirefoxProfiles )
{
    $FullPath=join-path $Env:appdata\Mozilla\Firefox\Profiles $Profile
    Copy-Item $DB $FullPath
    $FullPath
}

คุณสามารถขยายความคิดเช่นนี้และหยิบรายการ certs ที่เชื่อถือได้ออกจาก Windows store และสร้างไฟล์ cert8.db ได้ทันทีโดยใช้ Mozilla certutil ที่อ้างอิงในคำตอบของ wfaulk
Ryan Bolger

1

มีโครงการฟรีที่ให้ความสามารถในการจัดการใบรับรองรูท Firefox โดยใช้นโยบายกลุ่ม คุณสามารถติดตั้งหรือลบใบรับรองหลักจากฐานข้อมูล Firefox

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