Firefox'ta sistem genelinde sertifika yetkilileri ekleyin


27

Ubuntu'da varsayılan firefox ile gelmeyen bazı kök CA'ları eklemek istiyorum, ancak nasıl olduğunu bilmiyorum.

Onları yerel sertifikalara eklemeye çalıştım certutilama işe yaramadı. Sertifika veritabanımı mahvetti.

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

ve sonra

$ 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                       ,,

Sertifika Firefox'ta görünmez. Bunu birkaç kez denedim, hatta profili sildim ve Firefox arayüzünde bir kez göründü, ancak tamamen boştu.

Neyse, bu sadece bir kullanıcı için ve ben onları sistem genelinde eklemek istiyorum. Değiştirebileceğim sistem çapında bir veritabanı var mı? Nasıl?

Düzenleyebileceğim hiçbir sistem veritabanı /etc/X11/Xsession.d/yoksa /etc/xdg/autostart/, oturum başlangıcında kullanıcı profilini değiştirmek için X start komut dosyasına ( olanlar veya xdg autostart sistemi tarafından adlandırılan komut dosyası) güvenebilirim , ancak bu konuda bir çözüme ihtiyacım var. Eserleri. Kullanıcı profillerine sertifikaları bile komut satırından yükleyemiyorum!


Varsayılan profili düzenlemek bir seçenek midir (yeni bir profil oluşturulduğunda yeni eklenen sertifikalar eklenir, ancak eski profiller değişmeden kalır).
Andrea Corbellini

Hayır, yaklaşık +100 profil zaten var ve yeni profiller nadir bir şey.
Jorge Suárez de Lis,

Firefox'un dizininde yeni bir profil klasörü oluşturup ekleyemiyor profiles.inimusunuz? Sonra değişikliklerinizi ona ekleyebilir ve ardından profiles.iniher kullanıcı dizinine kopyalayabilirsiniz .
Wilf

Not: Firefox için profilleri çalıştırarak düzenleyebilirsiniz firefox -p- ancak önce Firefox'u kapatmanız gerekir.
Wilf

Hayır, kendi profilinde zaten var olan +100 kullanıcı var. Yer işaretlerini, tarihçelerini, şifrelerini vb. Kaybetmek istemeyeceklerdir.
Jorge Suárez de Lis

Yanıtlar:


20

Buradaki sorun, Firefox'un sertifikaları aradığı 'merkezi' bir konuma sahip olmamasıdır. Sadece mevcut profile bakıyor. Bu yüzden değişiklik yapmak /usr/share/ca-certificatesveya benzeri dizinler Firefox ile çalışmaz. Bu yıllarca istenen bir şeydi; sorunları görmek 620.373 , 449.498 ve 454.036 (ve muhtemelen diğerleri vardır).

Böylece, yalnızca iki tür çözümle kalırsınız: ya her profili değiştirin ya da Firefox'un davranışını değiştirin. Bunun aradığınızı olmadığını biliyorum, ancak bunun yolu yok çünkü Firefox sadece kullanıcıların profillerine bakıyor.

Bunu söylediğimde, seçeceğim çözüm sert veya sembolik linkler kullanmak, özellikle de hardlinks ile giderdim. Yargılamaya yetecek bilgim olmasa da, bu çözüm kesinlikle en kolay ve muhtemelen daha iyidir.

Yapmanız gereken, temel olarak her bir profil için her birini cert8.dbve key3.dbdosyaları kaldırmak ve bunları "en eksiksiz" cert8.dbve key3.db. Hardlinks ile giderseniz, orijinal cert8.dbve key3.dbyenileri ile ayırt edilemez.

İhtiyaçlarınıza uyacak izinleri ayarlamayı unutmayın. Büyük olasılıkla, chmod a+rwherkesin bir sertifika ekleyebilmesi / çıkarabilmesi için ihtiyacınız olacak. Yalnızca belirli kullanıcıların sertifika ekleyebilmesi / kaldırabilmesini istiyorsanız, bir grup oluşturabilir, iki veritabanını o gruba atayabilir ve +wyalnızca gruba izin verebilirsiniz .


Evet, gelebildiğim gibi. Firefox için biraz utanç verici, imo.
gertvdijk

Ancak bu kullanıcı sertifikaları üzerine yazmaz? Kullanıcı sertifikaları orada depolanmadı mı?
Jorge Suárez de Lis

@ JorgeSuárezdeLis: Peki, bu dosyaları sildiğinizde sertifikaları kaybedeceksiniz. Eğer "üzerine yazmak" ile kastettiğiniz buysa, evet. İlk önce tüm veritabanlarını birleştirip bir araya getirip ardından hardlinkleri oluşturmaya devam etmelisiniz.
Andrea Corbellini

Ama ... Bir kullanıcının diğerlerinin kişisel sertifikalarına sahip olmasını istemiyorum! Şimdi sertifika sertifikaları hakkında değil sertifikaları hakkında konuşuyorum.
Jorge Suárez de Lis,

@ JorgeSuárezdeLis: pardon, anlayamıyorum: kişisel sertifika nedir?
Andrea Corbellini

15

En kolay yol, sertifikayı örnek bir firefox profiline içe aktarmak ve ardından cert8.db'yi sertifika ile donatmak istediğiniz kullanıcılara kopyalamaktır.

İlk önce sertifikayı elle örnek kullanıcının firefox profiline aktarın. Sonra kopyala

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

kullanıcıların firefox-profilleri içine. Bu kadar. Yeni kullanıcıların sertifikayı otomatik olarak aldıklarından emin olmak istiyorsanız, kopyalayın cert8.db:

/etc/firefox-3.0/profile

İşte mevcut sertifikaları geçersiz kılmayan alternatif bir yol: [Linux sistemler için bash parçası]

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

Certutil'i libnss3-tools paketinde (debian / ubuntu) bulabilirsiniz.

Ayrıca bakınız: CA Sertifikasının programlı olarak içe aktarılması

Kaynak: Sertifikayı Programlı Olarak Mozilla'ya Kur


+1, ancak bunu yükseltirseniz, belki de bu türetildiği StackOverflow yanıtlarını da yükseltmelisiniz.
üçlü

4

Genel kanının aksine, olabilir sistem sertifikaları yerine kendi sabit kodlanmış kümesine bakmak Firefox'u olsun.

Bunu yapmak için, p11-kit adında bir paket kullanmak isteyeceksiniz . p11-kit libnssckbi.so, kodlanmış sertifika setini içeren paylaşılan kütüphanenin yerine geçmesini sağlar . P11-kit sürümü bunun yerine, sertifikaları sistem sertifika deposundan okur.

Firefox kendi sürümüyle gönderildiğinden, libnssckbi.solibnss3'te sağlanan sürüm yerine onu izlemeniz ve değiştirmeniz gerekir:

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

Ardından, ~/.pkiFirefox'u yeniden başlattıktan sonra Firefox'un sertifika veritabanını yenilemesini (sistem sertifikalarını çekmesine neden olarak) almak için dizini silin . Not: Bu, mağazada mevcut olan tüm sertifikaları siler, bu nedenle manuel olarak eklediğiniz özel sertifikalar varsa, bu klasörü yedeklemek ve daha sonra yeniden içe aktarmak isteyebilirsiniz.


Oh, vay, bu biraz kesmek, ama +1. dpkg-divertFirefox paketini yükseltirken APT'nin dosyanın üzerine yazmasını önlemek için bir adım eklemek isteyebilirsiniz .
gertvdijk

@wheeler. Bunun hala işe yarayıp yaramadığını biliyor musunuz? Ubuntu 18.04 ile denedim ve bu işlemi yaptıktan sonra Firefox hiçbir şeyi yüklemeyecek. P11-kit 0.23.9-2
Kevin Vasko

1

CCK Sihirbazı Firefox eklentisinin özelliklerinden biri CA sertifikalarını almaktır. Bu eklentiyi, bir şirket CA Sertifikasını içeren özel bir eklenti oluşturmak için kullanıyorum. Daha sonra özel xpi'yi, tüm iş istasyonlarının güncellemelerini aldığı dahili depodaki bir .deb dosyasına paketlerim.

CCK Sihirbazı

EDIT: xpi'yi Ubuntu için paketlemek için, / usr / lib / firefox-addons / extensions / [addon-name @ servername] dizinini içeren bir paket oluşturmanız ve xpi'nin tüm içeriğini bu dizine sıkıştırmanız gerekir. . Örneğin, addon foobarbaz'ınızı ve güncellemek için ayarladığınız sunucuyu adlandırırsanız (bu işlevi etkinleştirecekseniz) intranet.example.com, bu durumda dizin foobarbaz@intranet.example.com olur. Otomatik güncellemeyi asla etkinleştiremem, bunun yerine depodaki debı güncelle.


Bu yöntemi diğerlerine tercih ederim çünkü kendi kendine yetiyor ve bir yerde bir sürü başka özelleştirmeler içerebilir. Yazar, uzantısını AMO'dan kaldırmış görünüyor. Şimdi burada kendi sitesinde var ve en son xpi burada .
Amit Naidu,

1

Firefox temiz bir kurulumdan sonra çalışıyor. Sertifika veritabanının cert8.dbsilinmesi durumunda, bir sonraki Firefox başlangıcında yeniden oluşturulur. Bu, CA sertifikalarının sistem çapında bir varsayılan depolandığını kuvvetle önerir.

Firefox'un kaynak kodu , yerleşik CA sertifikalarının aslında firefoxçalıştırılabilir kod olarak kodlanmış olduğunu gösterir . Onlar ikamet / Nss / lib / ckfw / yerleşiklere / certdata.txt güvenlik

Yani sistem genelinde bir sertifika yüklemek için bir yolu yoktur. Kaynak kodunu eklemenin fikri mülkiyet haklarına sahip sorunları doğurabileceğine dikkat edin.


1

Bunu kullanıcılarım için yapan bir "Kullanıcı Ortamı Sanallaştırma" (UEV) uygulaması kullanıyorum, ancak bunu Windows istemcilerinde oturum açma komut dosyalarıyla aynı şekilde yapabilirsiniz. % APPDATA% \ Mozilla \ Firefox \% PROFILE% yolunu dinamik olarak bulmak için kodun tamamını göndermeyeceğim, ancak bulduğunuzda, bazı temel komutları kullanarak komut dosyalarını içe aktarabilirsiniz. Firefox profile / cert8.db yolunu belirlemek için temelde Firefox profiles.ini dosyasını okuyorum.

Certutil.exe uygulamasını kullanarak bakmak isteyebilirsiniz. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

Güvenilir sertifikaları otomatik olarak merkezi bir konumdan sistemdeki tüm kullanıcıların Firefox'una içe aktaran kullanıcılar için oturum açma komut dosyaları çalıştırabilirsiniz.

Sertifika alma vb komut dosyasının benim "çekirdek" i:

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'un eski güvenlik veritabanlarını (cert8.db, key3.db ve secmod.db) kullandığını çoğu zaman ve varsayılan olarak sertifikanın içine enjekte etmek için farklı bir komut satırı kullanmanız gerekeceğini öğrendim. Firefox’un kullandığı doğru veritabanı. (certutil'in adamından daha fazlasını görün)

eğer sisteminiz varsayılan veri tabanını kullanıyorsa, komut şöyle gitmelidir: (dbm)

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

Aksi halde şöyle olmalı: (sql)

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

certutil'den:

-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 dosyalarımı ilk certutilkomutla kullanmak çalıştı. Tek kullanıcılı bir kurulum betiğini otomatik hale getirmeyi düşünüyordum ve bu da işe yarıyor. Sen gerekir apt-get install libnss3-toolssahip olmak certutil.
xificurC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.