फ़ायरफ़ॉक्स पर प्रमाणपत्र प्राधिकारी सिस्टम-वाइड जोड़ें


27

मैं कुछ रूट CA जोड़ना चाहता हूं जो 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                       ,,

प्रमाणपत्र फ़ायरफ़ॉक्स पर दिखाई नहीं देगा। मैंने कई बार यह कोशिश की, यहां तक ​​कि प्रोफ़ाइल को हटा भी दिया, और यह फ़ायरफ़ॉक्स इंटरफ़ेस पर एक बार दिखाई दिया, लेकिन पूरी तरह से खाली।

वैसे भी, यह केवल एक उपयोगकर्ता के लिए है, और मैं उन्हें सिस्टम-वाइड जोड़ना चाहता हूं। क्या कोई सिस्टम-वाइड डेटाबेस है जिसे मैं संशोधित कर सकता हूं? कैसे?

यदि कोई सिस्टम-वाइड डेटाबेस नहीं है जिसे मैं संशोधित कर सकता हूं, तो मैं सत्र प्रारंभ पर उपयोगकर्ता प्रोफ़ाइल को संशोधित करने के लिए एक एक्स स्टार्ट स्क्रिप्ट (जैसे कि /etc/X11/Xsession.d/, या xdg ऑटोस्टार्ट सिस्टम पर कॉल की गई स्क्रिप्ट /etc/xdg/autostart/) पर भरोसा कर सकता हूं , लेकिन मुझे एक समाधान चाहिए काम करता है। मैं अब कमांड लाइन से उपयोगकर्ता प्रोफाइल पर प्रमाण पत्र भी लोड नहीं कर सकता!


क्या डिफ़ॉल्ट प्रोफ़ाइल को एक विकल्प संपादित करना है (ताकि नई प्रोफ़ाइल बनाते समय नए जोड़े गए प्रमाणपत्र जोड़े जाएं, लेकिन पुरानी प्रोफ़ाइल अपरिवर्तित बची हुई हैं)?
एंड्रिया कोरबेलिनी

नहीं, लगभग +100 प्रोफाइल पहले से मौजूद हैं और नए प्रोफाइल एक दुर्लभ चीज हैं।
जॉर्ज सुआरेज़ डे लिस

क्या आप फ़ायरफ़ॉक्स की निर्देशिका में एक नया प्रोफ़ाइल फ़ोल्डर उत्पन्न नहीं कर सकते, और फिर इसे जोड़ सकते हैं profiles.ini? तब आप इसमें अपने परिवर्तन जोड़ सकते हैं, और फिर इसे profiles.iniप्रत्येक उपयोगकर्ता निर्देशिका में कॉपी कर सकते हैं।
विल्फ

NB आप फ़ायरफ़ॉक्स के लिए प्रोफाइल को चलाकर संपादित कर सकते हैं firefox -p- लेकिन आपको पहले फ़ायरफ़ॉक्स को बंद करना होगा।
विल्फ

नहींं, उनके पहले से मौजूद प्रोफ़ाइल के साथ +100 उपयोगकर्ता हैं। वे अपने बुकमार्क, इतिहास, पासवर्ड आदि को खोना पसंद नहीं करेंगे
जॉर्ज सुआरेज़ डे लिस

जवाबों:


20

यहाँ समस्या यह है कि फ़ायरफ़ॉक्स के पास एक 'केंद्रीय' स्थान नहीं है जहाँ वह प्रमाणपत्रों की तलाश करता है। यह सिर्फ वर्तमान प्रोफ़ाइल में दिखता है। यही कारण है कि संशोधित /usr/share/ca-certificatesया अन्य समान निर्देशिका फ़ायरफ़ॉक्स के साथ काम नहीं करेगी। यह कुछ ऐसा है जो वर्षों से अनुरोध किया गया है; मुद्दों को देखें 620373 , 449498 और 454036 (और शायद वहाँ कई अन्य हैं)।

तो आप केवल दो तरह के समाधानों से बचे हैं: या तो प्रत्येक प्रोफ़ाइल को संशोधित करें, या फ़ायरफ़ॉक्स के व्यवहार को संशोधित करें। मुझे पता है कि यह वह नहीं है जो आप ढूंढ रहे हैं, बल्कि कोई भी तरीका नहीं है क्योंकि फ़ायरफ़ॉक्स केवल उपयोगकर्ताओं के प्रोफाइल को देखता है।

यह कहने के बाद कि, मैं जो समाधान चुनूंगा वह कठिन या प्रतीकात्मक लिंक का उपयोग कर रहा है, विशेष रूप से मैं हार्डलिंक के साथ जाऊंगा। यह समाधान निश्चित रूप से सबसे आसान और शायद बेहतर है, हालांकि मेरे पास न्यायाधीश करने के लिए पर्याप्त जानकारी नहीं है।

आपको जो करना है वह मूल रूप से प्रत्येक प्रोफ़ाइल के लिए प्रत्येक cert8.dbऔर key3.dbफ़ाइलों को हटा रहा है और उन्हें "सबसे पूर्ण" cert8.dbऔर के लिंक के साथ बदलें key3.db। यदि आप हार्डलिंक के साथ जाते हैं, तो मूल cert8.dbऔर key3.dbनए से अप्रभेद्य होगा।

अपनी आवश्यकताओं को पूरा करने के लिए अनुमतियों को समायोजित करने के लिए याद रखें। सबसे अधिक संभावना है, आपको इसकी आवश्यकता होगी chmod a+rwताकि हर कोई एक प्रमाण पत्र को जोड़ / निकाल सके। यदि आप चाहते हैं कि कुछ विशिष्ट उपयोगकर्ता प्रमाणपत्र जोड़ने / निकालने में सक्षम हों, तो आप एक समूह बना सकते हैं, उस समूह को दो डेटाबेस सौंप सकते हैं और समूह को +wअनुमति दे सकते हैं ।


हाँ, मैं भी साथ आ सकता था। यह फ़ायरफ़ॉक्स, imo के लिए थोड़ी शर्म की बात है।
gertvdijk 18

लेकिन उपयोगकर्ता प्रमाणपत्र को अधिलेखित नहीं करेगा? क्या उपयोगकर्ता प्रमाणपत्र वहां संग्रहीत नहीं हैं?
जॉर्ज सुआरेज़ डे लिस

@ JorgeSuárezdeLis: ठीक है, जब आप उस फ़ाइलों को हटाते हैं तो आप प्रमाणपत्रों को ढीला कर देंगे। यदि यह "ओवरराइटिंग" से आपका मतलब है, तो हाँ। आपको पहले सभी डेटाबेस को एक में मर्ज करना चाहिए और फिर हार्डलिंक बनाना होगा।
एंड्रिया कोरबेलिनी

लेकिन ... मैं नहीं चाहता कि एक उपयोगकर्ता के पास दूसरों के व्यक्तिगत प्रमाण पत्र हों! मैं अब उनके प्रमाणपत्रों के बारे में बात कर रहा हूं, न कि प्रमाणपत्र अधिकारियों के बारे में।
जॉर्ज सुआरेज़ डे लिस

@ JorgeSuárezdeLis: क्षमा करें, मैं समझ नहीं पा रहा हूं: व्यक्तिगत प्रमाणपत्र क्या हैं ?
एंड्रिया कोरबेलिनी

15

सबसे आसान तरीका है कि आप सैंपल फायरफॉक्स-प्रोफाइल में सर्टिफिकेट इंपोर्ट करें और फिर सर्टिफिकेट से लैस उन यूजर्स को सर्टिफिकेट भेज दें।

पहले नमूना-उपयोगकर्ता के फ़ायरफ़ॉक्स प्रोफ़ाइल में हाथ से प्रमाण पत्र आयात करें। फिर कॉपी करें

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

उपयोगकर्ताओं में फ़ायरफ़ॉक्स-प्रोफाइल। बस। यदि आप यह सुनिश्चित करना चाहते हैं, कि नए उपयोगकर्ताओं को स्वतः प्रमाण पत्र मिल जाए, तो इसकी प्रतिलिपि बनाएँ cert8.db:

/etc/firefox-3.0/profile

यहां एक वैकल्पिक तरीका है जो मौजूदा प्रमाणपत्रों को ओवरराइड नहीं करता है: [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- उपकरण पैकेज (डेबियन / ubuntu) में प्रमाणित कर सकते हैं।

इसे भी देखें: CA प्रमाणपत्र का प्रोग्रामेटिक आयात

स्रोत: प्रोग्रामेटिक रूप से मोज़िला में प्रमाणपत्र स्थापित करें


+1 लेकिन यदि आप इसे बढ़ाते हैं, तो आपको शायद StackOverflow पर उत्तर भी देना चाहिए, जो इससे प्राप्त हुआ था।
ट्रिपलए

4

आम धारणा के विपरीत, आप अपने स्वयं के हार्ड-कोडित सेट के बजाय सिस्टम प्रमाणपत्र देखने के लिए फ़ायरफ़ॉक्स प्राप्त कर सकते हैं।

ऐसा करने के लिए, आप p11-kit नामक पैकेज का उपयोग करना चाहेंगे । p11- किट libnssckbi.so, एक साझा लाइब्रेरी के लिए एक ड्रॉप-इन प्रतिस्थापन प्रदान करता है , जिसमें प्रमाणपत्रों का हार्डकोड सेट होता है। इसके बजाय p11- किट संस्करण सिस्टम सर्टिफिकेट स्टोर से प्रमाणपत्र पढ़ता है।

चूंकि फ़ायरफ़ॉक्स अपने स्वयं के संस्करण के साथ जहाज करता है 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फ़ायरफ़ॉक्स को पुनः आरंभ करने पर अपने प्रमाणपत्र डेटाबेस को रीफ़्रेश करने के लिए फ़ायरफ़ॉक्स प्राप्त करने के लिए निर्देशिका को हटा दें (इसके कारण सिस्टम सेर्ट्स में खींचने के लिए)। नोट: यह स्टोर में मौजूद किसी भी मौजूदा प्रमाणपत्र को हटा देगा, इसलिए यदि आपके पास कस्टम हैं जिन्हें आपने मैन्युअल रूप से जोड़ा है, तो आप उस फ़ोल्डर का बैकअप लेना चाहते हैं और फिर उन्हें पुनः आयात कर सकते हैं।


ओह, वाह, यह हैक का एक सा है, लेकिन +1। dpkg-divertजब आप फ़ायरफ़ॉक्स पैकेज को अपग्रेड करते हैं, तो आप एपीटी फाइल को दोबारा लिखने से बचने के लिए एक कदम जोड़ना चाह सकते हैं ।
gertvdijk

@wheeler। क्या आप जानते हैं कि यह अभी भी काम करता है? मैंने इसे उबंटू 18.04 के साथ आज़माया है और जब मैं यह प्रदर्शन करता हूँ तो फ़ायरफ़ॉक्स किसी भी तरह के किसी भी सीर्ट को लोड नहीं करेगा। P11-किट 0.23.9-2
केविन वास्को

1

CCK विजार्ड फ़ायरफ़ॉक्स ऐड-ऑन की विशेषताओं में से एक CA सेर्ट्स आयात कर रहा है। मैं इस ऐड-ऑन का उपयोग कस्टम ऐड-ऑन बनाने के लिए करता हूं जिसमें एक कंपनी CA सर्टिफिकेट शामिल है। फिर मैं आंतरिक रिपॉजिटरी में .deb में कस्टम xpi को पैकेज करता हूं जिससे सभी वर्कस्टेशन को अपडेट मिलता है।

CCK जादूगर

EDIT: उबंटू के लिए xpi को पैकेज करने के लिए, आपको एक ऐसा पैकेज बनाना होगा जिसमें निर्देशिका / usr / lib / firefox-addons / extension / [addon-name @ servername] शामिल हों और xpi की संपूर्ण सामग्री को इस निर्देशिका में अनज़िप करें। । उदाहरण के लिए यदि आप अपने ऐडऑन फोर्बार्ज़ और सर्वर को सेट करते हैं जिसे आपने इसे अपडेट करने के लिए सेट किया है (यदि आप उस फ़ंक्शन को सक्षम करना चाहते थे) intranet.example.com है, तो निर्देशिका foobarbaz@intranet.example.com होगी। मैं कभी भी ऑटो अपडेट को सक्षम नहीं करता, बल्कि रेपो में बहस को अपडेट करता हूं।


मैं इस पद्धति को दूसरों पर पसंद करता हूं क्योंकि यह स्व-निहित है और इसमें एक स्थान पर अन्य अनुकूलन के टन शामिल हो सकते हैं। लगता है लेखक ने हालांकि एएमओ से अपना विस्तार हटा दिया है। अब वह यहाँ अपनी साइट पर है , और नवीनतम xpi यहाँ है
अमित नायडू

1

फ़ायरफ़ॉक्स एक साफ स्थापना के बाद काम करता है। यदि सर्टिफिकेट डेटाबेस cert8.dbको हटा दिया जाता है, तो इसे अगले फ़ायरफ़ॉक्स प्रारंभ पर पुनर्जीवित किया जाता है। यह दृढ़ता से सुझाव देता है कि सीए सीट्स का एक सिस्टम-वाइड डिफ़ॉल्ट स्टोरेज है।

फ़ायरफ़ॉक्स के सोर्स कोड से पता चलता है कि बिल्ट-इन सीए सेर्ट्स वास्तव में firefoxनिष्पादन योग्य हार्ड-कोडेड हैं । वे सुरक्षा / nss / lib / ckfw / buildins / certdata.txt में रहते हैं

इसलिए सर्टिफिकेट सिस्टम-वाइड स्थापित करने का कोई तरीका नहीं है। पैचिंग सोर्स कोड से सावधान रहें कि बौद्धिक संपदा अधिकारों के मुद्दे सामने आ सकते हैं।


1

मैं एक "उपयोगकर्ता पर्यावरण वर्चुअलाइजेशन" (यूईवी) एप्लिकेशन का उपयोग कर रहा हूं जो मेरे उपयोगकर्ताओं के लिए ऐसा करता है, लेकिन आप विंडोज क्लाइंट में लॉगऑन स्क्रिप्ट के साथ ऐसा ही कर सकते हैं। मैं सभी एप्लिकेशन को डायनामिक रूप से% APPDATA% \ Mozilla \ Firefox \% शख्सियत पथ खोजने के लिए पोस्ट नहीं करूंगा, लेकिन जब आप इसे खोज लेंगे, तो आप कुछ मूल आदेशों का उपयोग करके स्क्रिप्ट आयात कर सकते हैं। फ़ायरफ़ॉक्स प्रोफ़ाइल / cert8.db का पथ निर्धारित करने के लिए मैं मूल रूप से फ़ायरफ़ॉक्स प्रोफाइल.इन फ़ाइल पढ़ रहा हूँ।

आप certutil.exe एप्लिकेशन का उपयोग करके देखना चाह सकते हैं। https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

आप उन उपयोगकर्ताओं के लिए लॉगऑन स्क्रिप्ट चला सकते हैं, जो सिस्टम पर सभी उपयोगकर्ताओं के फ़ायरफ़ॉक्स में एक केंद्रीय स्थान से स्वचालित रूप से विश्वसनीय सिरों को आयात करते हैं।

यहाँ मेरे प्रमाणपत्र आयात 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

मुझे पता चला कि अधिकांश समय और डिफ़ॉल्ट रूप से यदि कॉन्फ़िगर नहीं किया गया है अन्यथा फ़ायरफ़ॉक्स विरासत सुरक्षा डेटाबेस (cert8.db, key3.db और secmod.db) का उपयोग करता है, जिसका अर्थ है कि आपको प्रमाण पत्र को इंजेक्ट करने के लिए एक अलग कमांड लाइन का उपयोग करने की आवश्यकता होगी। फ़ायरफ़ॉक्स का उपयोग करने वाला सही डेटाबेस। (प्रमाणिक व्यक्ति से अधिक देखें)

इसलिए यदि आपका सिस्टम डिफ़ॉल्ट डेटा बेस का उपयोग करता है तो कमांड इस तरह से जाना चाहिए: (डीबीएम)

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

अन्यथा यह इस तरह होना चाहिए: (वर्ग)

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

आदमी से प्रमाणित:

-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

पहली certutilकमांड के साथ मेरी .pem फ़ाइलों का उपयोग करके काम किया। मैं एक एकल-उपयोगकर्ता सेटअप स्क्रिप्ट को स्वचालित करने के लिए देख रहा था और यह चाल करता है। आपको apt-get install libnss3-toolsकरना पड़ेगा certutil
xificurC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.