เพิ่มผู้ให้บริการออกใบรับรองทั่วทั้งระบบบน Firefox


27

ฉันต้องการเพิ่ม CA หลัก ๆ ที่ไม่ได้มาพร้อมกับ firefox เริ่มต้นบน Ubuntu แต่ฉันไม่รู้

ฉันลองเพิ่มลงในใบรับรองในเครื่องด้วยcertutilแต่ไม่ได้ผล มันทำให้ฐานข้อมูลใบรับรองของฉันสับสน

$ certutil -A -d .mozilla/firefox/kek3dogy.default/ -i /usr/local/share/ca-certificates/FNMT_ACRAIZ.crt -n "Certificado Raiz FNMT" -t "TCu,Cuw,Tuw"

แล้ว

$ certutil -L -d .mozilla/firefox/kek3dogy.default/

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Go Daddy Secure Certification Authority                      ,,   
VeriSign Class 3 Secure Server CA - G3                       ,,   
VeriSign Class 3 Extended Validation SSL CA                  ,,   
DigiCert High Assurance CA-3                                 ,,   
GlobalSign Domain Validation CA - G2                         ,,   
GeoTrust SSL CA                                              ,,   
StartCom Class 2 Primary Intermediate Server CA              ,,   
Google Internet Authority                                    ,,   
Certificado Raiz FNMT                                        CT,C,c
USERTrust Legacy Secure Server CA                            ,,   
HP Jetdirect 2B0EAD20                                        ,,   
Akamai Subordinate CA 3                                      ,,   
VeriSign, Inc.                                               ,,   
Thawte SGC CA                                                ,,   
VeriSign Class 3 Secure Server CA - G2                       ,,

ใบรับรองจะไม่ปรากฏใน Firefox ฉันลองมาหลายครั้งแล้วแม้จะลบโปรไฟล์และมันก็ปรากฏขึ้นอีกครั้งบนอินเทอร์เฟซ Firefox แต่มันว่างเปล่าทั้งหมด

อย่างไรก็ตามนั่นเป็นเพียงสำหรับผู้ใช้และฉันต้องการที่จะเพิ่มพวกเขาทั้งระบบ มีฐานข้อมูลทั้งระบบที่ฉันสามารถแก้ไขได้หรือไม่? อย่างไร?

หากไม่มีฐานข้อมูลทั้งระบบที่ฉันสามารถแก้ไขได้ฉันสามารถพึ่งพา X start script (ในฐานะ/etc/X11/Xsession.d/ที่เป็นสคริปต์หรือสคริปต์ที่เรียกโดยระบบ xdg autostart เปิด/etc/xdg/autostart/) เพื่อแก้ไขโปรไฟล์ผู้ใช้เมื่อเริ่มต้นเซสชัน แต่ฉันต้องการโซลูชันที่ โรงงาน ฉันไม่สามารถโหลดใบรับรองในโปรไฟล์ผู้ใช้ได้จากบรรทัดคำสั่งทันที!


การแก้ไขโปรไฟล์เริ่มต้นเป็นตัวเลือกหรือไม่ (เพื่อให้มีการเพิ่มใบรับรองใหม่เมื่อสร้างโปรไฟล์ใหม่ แต่ไม่มีการเปลี่ยนแปลงโปรไฟล์เก่า)
Andrea Corbellini

ไม่มีโปรไฟล์ประมาณ +100 แล้วและโปรไฟล์ใหม่เป็นของหายาก
Jorge Suárez de Lis

คุณไม่สามารถสร้างโฟลเดอร์โปรไฟล์ใหม่ในไดเรกทอรีของ Firefox แล้วเพิ่มไปยังได้profiles.iniหรือไม่ จากนั้นคุณสามารถเพิ่มการเปลี่ยนแปลงของคุณแล้วคัดลอกและprofiles.iniไปยังไดเรกทอรีผู้ใช้แต่ละรายการ
Wilf

NB คุณสามารถแก้ไขโปรไฟล์สำหรับ Firefox ได้ด้วยการเปิดfirefox -p- แต่คุณต้องปิด Firefox เสียก่อน
Wilf

ไม่, มีผู้ใช้ 100 รายที่มีโปรไฟล์ที่มีอยู่แล้วของตนเอง พวกเขาไม่ต้องการสูญเสียบุ๊กมาร์กประวัติรหัสผ่าน ฯลฯ
Jorge Suárez de Lis

คำตอบ:


20

ปัญหาที่นี่คือ Firefox ไม่มีตำแหน่ง 'ส่วนกลาง' ที่จะค้นหาใบรับรอง มันแค่มองเข้าไปในโปรไฟล์ปัจจุบัน นั่นเป็นเหตุผลที่การแก้ไข/usr/share/ca-certificatesหรือไดเรกทอรีที่คล้ายกันอื่น ๆ จะไม่ทำงานกับ Firefox นี่คือสิ่งที่ถูกร้องขอมานานหลายปี ดูปัญหา620373 , 449498และ454036 (และอาจมีอีกหลายรายการ)

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

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

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

จำไว้ว่าต้องปรับการอนุญาตให้เหมาะสมกับความต้องการของคุณ เป็นไปได้มากที่คุณจะต้องทำเพื่อchmod a+rwให้ทุกคนสามารถเพิ่ม / ลบใบรับรองได้ หากคุณต้องการให้ผู้ใช้บางคนเท่านั้นที่สามารถเพิ่ม / ลบใบรับรองคุณสามารถสร้างกลุ่มกำหนดฐานข้อมูลสองกลุ่มให้กับกลุ่มนั้นและให้+wสิทธิ์กับกลุ่ม


ใช่เช่นเดียวกับที่ฉันสามารถเกิดขึ้นได้ มันเป็นความอัปยศสำหรับ Firefox หรือ IMO
gertvdijk

แต่จะไม่เขียนทับใบรับรองผู้ใช้ใช่ไหม ใบรับรองผู้ใช้ไม่ได้เก็บไว้ที่นั่นหรือ
Jorge Suárez de Lis

@ JorgeSuárezdeLis: ดีเมื่อคุณลบไฟล์ที่คุณจะหลวมใบรับรอง ถ้านี่คือสิ่งที่คุณหมายถึงด้วย "การเขียนทับ" แล้วใช่ คุณควรรวมฐานข้อมูลทั้งหมดไว้ในที่เดียวแล้วดำเนินการสร้างฮาร์ดลิงก์
Andrea Corbellini

แต่ ... ฉันไม่ต้องการให้ผู้ใช้รายหนึ่งมีใบรับรองส่วนบุคคลของผู้อื่น! ตอนนี้ฉันกำลังพูดถึงใบรับรองของพวกเขาไม่ใช่เจ้าหน้าที่ออกใบรับรอง
Jorge Suárez de Lis

@ JorgeSuárezdeLis: ขอโทษฉันไม่เข้าใจ: ใบรับรองส่วนตัวคืออะไร?
Andrea Corbellini

15

วิธีที่ง่ายที่สุดคือการนำเข้าใบรับรองไปยังตัวอย่าง firefox-profile จากนั้นคัดลอก cert8.db ไปยังผู้ใช้ที่คุณต้องการติดตั้งใบรับรอง

ขั้นแรกให้นำเข้าใบรับรองด้วยตนเองลงในโปรไฟล์ firefox ของกลุ่มตัวอย่างผู้ใช้ จากนั้นก็คัดลอก

/home/${USER}/.mozilla/firefox/${randomalphanum}.default/cert8.db

ลงในโปรไฟล์ผู้ใช้ firefox แค่นั้นแหละ. หากคุณต้องการแน่ใจว่าผู้ใช้รายใหม่ได้รับใบรับรองโดยอัตโนมัติให้คัดลอกcert8.dbไปที่:

/etc/firefox-3.0/profile

นี่เป็นอีกทางเลือกหนึ่งที่ไม่แทนที่ใบรับรองที่มีอยู่: [bash fragment สำหรับระบบ linux]

certificateFile="MyCa.cert.pem"
certificateName="MyCA Name" 
for certDB in $(find  ~/.mozilla* ~/.thunderbird -name "cert8.db")
do
  certDir=$(dirname ${certDB});
  #log "mozilla certificate" "install '${certificateName}' in ${certDir}"
 certutil -A -n "${certificateName}" -t "TCu,Cuw,Tuw" -i ${certificateFile} -d ${certDir}
done

คุณอาจพบใบรับรองในแพ็คเกจ libnss3-tools (debian / ubuntu)

ดูเพิ่มเติมที่: การนำเข้าโปรแกรม CA Certificate

แหล่งที่มา: ติดตั้งใบรับรองโดยทางโปรแกรมลงใน Mozilla


+1 แต่ถ้าคุณโหวตขึ้นคุณอาจควรโหวตคำตอบของ StackOverflow ด้วยซึ่งมันได้มาจาก
tripleee

4

ตรงกันข้ามกับความเชื่อที่ได้รับความนิยมคุณสามารถให้ Firefox ดูใบรับรองระบบแทนชุดฮาร์ดโค้ดของตนเอง

การทำเช่นนี้คุณจะต้องการใช้แพคเกจที่เรียกว่าp11 ชุด p11-kit จัดเตรียมการแทนที่แบบดรอปดาวน์สำหรับlibnssckbi.soไลบรารีที่แบ่งใช้ที่มีชุด hardcoded ของใบรับรอง รุ่น p11-kit จะอ่านใบรับรองจากที่เก็บใบรับรองระบบแทน

เนื่องจาก Firefox มาพร้อมกับเวอร์ชันของตัวเองlibnssckbi.soคุณจะต้องติดตามและแทนที่มันแทนเวอร์ชันที่ให้ไว้ใน libnss3:

sudo mv /usr/lib/firefox/libnssckbi.so /usr/lib/firefox/libnssckbi.so.bak
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so

จากนั้นลบ~/.pkiไดเรกทอรีเพื่อให้ Firefox รีเฟรชฐานข้อมูลใบรับรอง (ทำให้ดึงข้อมูลในระบบ) เมื่อเริ่มต้น Firefox ใหม่ หมายเหตุ: การดำเนินการนี้จะลบใบรับรองที่มีอยู่ทั้งหมดในร้านค้าดังนั้นหากมีใบรับรองแบบกำหนดเองที่คุณเพิ่มด้วยตนเองคุณอาจต้องการสำรองข้อมูลโฟลเดอร์นั้นแล้วนำเข้าอีกครั้ง


โอ้ว้าวนั่นเป็นบิตของการแฮ็ก แต่ +1 คุณอาจต้องการเพิ่มdpkg-divertขั้นตอนเพื่อหลีกเลี่ยงการเขียนทับ APT ไฟล์อีกครั้งเมื่อคุณอัพเกรดแพ็คเกจ Firefox
gertvdijk

@wheeler คุณรู้หรือไม่ถ้ายังใช้งานได้อยู่ ฉันได้ลองกับ Ubuntu 18.04 แล้วหลังจากฉันใช้ Firefox นี้จะไม่โหลด certs ใด ๆ เลย มี p11-kit 0.23.9-2
Kevin Vasko

1

หนึ่งในคุณสมบัติของ Add-on ของ CCK Wizard Firefox คือการนำเข้า CA certs ฉันใช้ Add-on นี้เพื่อสร้าง Add-on ที่กำหนดเองซึ่งรวมถึง บริษัท CA Cert จากนั้นฉันจะจัดแพคเกจ xpi ที่กำหนดเองใน. deb บนพื้นที่เก็บข้อมูลภายในที่เวิร์กสเตชันทั้งหมดได้รับการอัปเดต

ตัวช่วยสร้าง CCK

แก้ไข: เพื่อบรรจุ xpi สำหรับ Ubuntu คุณต้องสร้างแพ็คเกจที่มีไดเรกทอรี / usr / lib / firefox-addons / extensions / [addon-name @ servername] และคลายซิปเนื้อหาทั้งหมดของ xpi ในไดเรกทอรีนี้ . ตัวอย่างเช่นหากคุณตั้งชื่อ addon foobarbaz และเซิร์ฟเวอร์ที่คุณตั้งให้อัปเดตจาก (หากคุณเปิดใช้งานฟังก์ชั่นนั้น) ก็คือ intranet.example.com ดังนั้นไดเรกทอรีนั้นจะเป็น foobarbaz@intranet.example.com ฉันไม่เคยเปิดใช้งานการอัปเดตอัตโนมัติ แต่ให้อัปเดต deb ใน repo แทน


ฉันชอบวิธีนี้มากกว่าวิธีอื่น ๆ เนื่องจากมีอยู่ในตัวเองและสามารถรวมการปรับแต่งอื่น ๆ ได้ในที่เดียว ผู้เขียนดูเหมือนว่าจะลบส่วนขยายของเขาจาก AMO แม้ว่า ตอนนี้เขามีในเว็บไซต์ของตัวเองที่นี่และดัชนีราคาส่งออกล่าสุดที่นี่
Amit Naidu

1

Firefox ทำงานหลังจากการติดตั้งใหม่ทั้งหมด หากฐานข้อมูลใบรับรองcert8.dbถูกลบจะถูกสร้างใหม่ใน Firefox ถัดไปที่เริ่มต้น สิ่งนี้ชี้ให้เห็นอย่างชัดเจนว่ามีที่เก็บข้อมูลเริ่มต้นสำหรับ CA certs

ซอร์สโค้ดของ Firefox แสดงให้เห็นว่า CA certs ในตัวนั้นในความเป็นจริงฮาร์ดโค้ดเข้าfirefoxปฏิบัติการได้ พวกเขาอยู่ในความปลอดภัย / nss / lib / ckfw / builtins / certdata.txt

ดังนั้นจึงไม่มีวิธีการติดตั้งใบรับรองระบบ ระวังว่าการแก้ไขซอร์สโค้ดอาจทำให้เกิดปัญหากับสิทธิ์ในทรัพย์สินทางปัญญา


1

ฉันกำลังใช้แอปพลิเคชัน "User Environment Virtualization" (UEV) ที่ทำเพื่อผู้ใช้ของฉัน แต่คุณสามารถทำได้ด้วยสคริปต์การเข้าสู่ระบบในไคลเอนต์ Windows เช่นเดียวกัน ฉันจะไม่โพสต์รหัสทั้งหมดเพื่อหาเส้นทาง% APPDATA% \ Mozilla \ Firefox \% PROFILE% แบบไดนามิก แต่เมื่อคุณค้นหาคุณสามารถนำเข้าสคริปต์โดยใช้คำสั่งพื้นฐานบางอย่าง โดยทั่วไปแล้วฉันกำลังอ่านไฟล์ Firefox profiles.ini เพื่อกำหนดเส้นทางไปยังโปรไฟล์ Firefox / cert8.db

คุณอาจต้องการดูโดยใช้แอปพลิเคชัน certutil.exe https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

คุณสามารถเรียกใช้สคริปต์การเข้าสู่ระบบสำหรับผู้ใช้ที่นำเข้า certs ที่เชื่อถือได้โดยอัตโนมัติจากตำแหน่งศูนย์กลางไปยัง Firefox ของผู้ใช้ทั้งหมดในระบบ

นี่คือ "แกนหลัก" ของสคริปต์ vb นำเข้าใบรับรองของฉัน:

If Instr(strLine,"Path=Profiles/") Then
  arrLine = Split(strLine, "/")
  strProfile = strAppData & "\Mozilla\Firefox\Profiles\" & arrLine(1)
  strCertDB = strProfile & "\cert8.db"

  'Verify the DB exists, if not move to the next entry
  If objFSO.FileExists(strCertDB) Then
    'Run certutil command on this database
    strCertCommand1 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\MYCA_Root.cer"

    strCertCommand2 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYSECONDCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\SecondCA_Root.cer"

    strCertCommand3 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYTHIRDCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\ThirdCA_Root.cer"

    'Run the import commands for this Firefox profile
    objShell.Run("%comspec% /c " & strCertCommand1),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand2),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand3),0,TRUE

1

ฉันพบว่าเวลาส่วนใหญ่และเป็นค่าเริ่มต้นหากไม่ได้กำหนดค่าไว้มิฉะนั้น Firefox จะใช้ฐานข้อมูลความปลอดภัยดั้งเดิม (cert8.db, key3.db และ secmod.db) ซึ่งหมายความว่าคุณจะต้องใช้บรรทัดคำสั่งอื่นเพื่อฉีดใบรับรองลงใน ฐานข้อมูลที่ถูกต้องที่ Firefox ใช้ (ดูเพิ่มเติมจากคนที่ certutil)

ดังนั้นหากระบบของคุณใช้ฐานข้อมูลเริ่มต้นคำสั่งควรเป็นดังนี้: (dbm)

certutil -A -n "Description Name" -t "CT,C,C" -d dbm:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

ไม่อย่างนั้นก็ควรจะเป็นแบบนี้: (sql)

certutil -A -n "Description Name" -t "CT,C,C" -d sql:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

จากคน certutil:

-d [prefix]directory
Specify the database directory containing the certificate and key
database files.

certutil supports two types of databases: the legacy security databases
(cert8.db, key3.db, and secmod.db) and new SQLite databases (cert9.db,
key4.db, and pkcs11.txt).

NSS recognizes the following prefixes:

·   sql: requests the newer database

·   dbm: requests the legacy database

If no prefix is specified the default type is retrieved from
NSS_DEFAUL

การใช้ไฟล์. pem ของฉันด้วยcertutilคำสั่งแรกใช้งานได้ ฉันกำลังมองหาการติดตั้งสคริปต์ผู้ใช้คนเดียวโดยอัตโนมัติและสิ่งนี้จะหลอกลวง คุณจะต้องให้มีการapt-get install libnss3-tools certutil
xificurC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.