Tambahkan otoritas sertifikat di seluruh sistem pada Firefox

27

Saya ingin menambahkan beberapa root CA yang tidak datang dengan default firefox di Ubuntu, tapi saya tidak tahu caranya.

Saya mencoba menambahkannya ke sertifikat lokal dengan certutil , tetapi tidak berhasil. Itu mengacaukan basis data sertifikat saya.

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

lalu

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

Sertifikat tidak akan muncul di Firefox. Saya mencoba ini beberapa kali, bahkan menghapus profil, dan itu muncul sekali pada antarmuka Firefox, tetapi benar-benar kosong.

Bagaimanapun, itu hanya untuk pengguna, dan saya ingin menambahkannya ke seluruh sistem. Apakah ada basis data seluruh sistem yang dapat saya modifikasi? Bagaimana?

Jika tidak ada database seluruh sistem yang dapat saya modifikasi, saya dapat mengandalkan skrip start X (seperti skrip /etc/X11/Xsession.d/, atau skrip yang dipanggil oleh sistem autostart xdg aktif /etc/xdg/autostart/) untuk mengubah profil pengguna saat sesi dimulai, tetapi saya memerlukan solusi yang bekerja. Saya bahkan tidak dapat memuat sertifikat pada profil pengguna dari baris perintah sekarang!

Jorge Suárez de Lis
sumber
Apakah mengedit profil default merupakan opsi (sehingga sertifikat yang baru ditambahkan ditambahkan ketika profil baru dibuat, tetapi profil lama tidak berubah)?
Andrea Corbellini
Tidak, sekitar +100 profil sudah ada dan profil baru adalah hal yang langka.
Jorge Suárez de Lis
Tidak bisakah Anda membuat folder profil baru di direktori Firefox, dan kemudian menambahkannya profiles.ini? Lalu Anda bisa menambahkan perubahan Anda ke sana, lalu menyalinnya dan profiles.inike setiap direktori pengguna.
Wilf
NB Anda dapat mengedit profil untuk Firefox dengan menjalankan firefox -p- tetapi Anda harus menutup Firefox terlebih dahulu.
Wilf
Tidak, ada +100 pengguna dengan profil mereka sendiri yang sudah ada. Mereka tidak ingin kehilangan bookmark, riwayat, kata sandi, dll.
Jorge Suárez de Lis

Jawaban:

20

Masalahnya di sini adalah Firefox tidak memiliki lokasi 'sentral' tempat ia mencari sertifikat. Itu hanya melihat ke profil saat ini. Itu sebabnya memodifikasi /usr/share/ca-certificatesatau direktori serupa lainnya tidak akan berfungsi dengan Firefox. Ini adalah sesuatu yang telah diminta selama bertahun-tahun; lihat masalah 620373 , 449498 dan 454036 (dan mungkin ada banyak lainnya).

Jadi, Anda hanya memiliki dua jenis solusi: memodifikasi setiap profil, atau mengubah perilaku Firefox. Saya tahu ini bukan yang Anda cari, tetapi tidak ada cara karena Firefox hanya melihat profil pengguna.

Karena itu, solusi yang saya pilih adalah menggunakan tautan simbolis atau keras, khususnya saya menggunakan tautan keras. Solusi ini pasti yang paling mudah dan mungkin lebih baik, meskipun saya tidak punya cukup informasi untuk dihakimi.

Yang harus Anda lakukan pada dasarnya adalah menghapus masing cert8.db- masing dan key3.dbfile untuk setiap profil dan menggantinya dengan tautan ke "paling lengkap" cert8.dbdan key3.db. Jika Anda menggunakan hardlink, yang asli cert8.dbdan key3.dbtidak dapat dibedakan dari yang baru.

Ingatlah untuk menyesuaikan izin agar sesuai dengan kebutuhan Anda. Kemungkinan besar, Anda harus melakukannya chmod a+rwagar semua orang dapat menambah / menghapus sertifikat. Jika Anda hanya ingin pengguna tertentu dapat menambah / menghapus sertifikat, Anda dapat membuat grup, menetapkan dua database untuk grup itu dan memberikan +wizin hanya kepada grup.

Andrea Corbellini
sumber
Yup, sama seperti yang bisa saya pikirkan. Agak memalukan bagi Firefox, imo.
gertvdijk
Tetapi tidak akan menimpa bahwa sertifikat pengguna? Bukankah sertifikat pengguna disimpan di sana?
Jorge Suárez de Lis
@ JorgeSuárezdeLis: well, ketika Anda menghapus file itu, Anda akan kehilangan sertifikat. Jika ini yang Anda maksud dengan "menimpa", maka ya. Pertama-tama Anda harus menggabungkan semua database menjadi satu dan kemudian melanjutkan membuat hardlink.
Andrea Corbellini
Tapi ... Saya tidak ingin satu pengguna memiliki sertifikat pribadi yang lain! Saya berbicara sekarang tentang sertifikat mereka, bukan otoritas sertifikat.
Jorge Suárez de Lis
@ JorgeSuárezdeLis: maaf, saya tidak mengerti: apa itu sertifikat pribadi ?
Andrea Corbellini
15

Cara termudah adalah dengan mengimpor sertifikat ke profil firefox sampel dan kemudian salin cert8.db ke pengguna yang ingin Anda lengkapi dengan sertifikat.

Pertama-tama impor sertifikat dengan tangan ke profil firefox pengguna sampel. Kemudian salin

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

ke dalam profil pengguna firefox. Itu dia. Jika Anda ingin memastikan, bahwa pengguna baru mendapatkan sertifikat secara otomatis, salin cert8.dbke:

/etc/firefox-3.0/profile

Berikut ini cara alternatif yang tidak menggantikan sertifikat yang ada: [bash fragment for linux systems]

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

Anda dapat menemukan certutil di paket libnss3-tools (debian / ubuntu).

Lihat juga: Impor terprogram Sertifikat CA

Sumber: Menginstal Sertifikat ke Mozilla secara terprogram

TomKat
sumber
+1 tetapi jika Anda melakukan upvote ini, Anda mungkin juga harus melakukan upvote jawaban di StackOverflow dari mana ini berasal.
tripleee
4

Bertolak belakang dengan kepercayaan yang populer, Anda bisa meminta Firefox untuk melihat sertifikat sistem alih-alih perangkat kerasnya sendiri.

Untuk melakukan ini, Anda ingin menggunakan paket yang disebut p11-kit . p11-kit menyediakan pengganti drop-in untuk libnssckbi.so, pustaka bersama yang berisi kumpulan sertifikat yang di-hardcode. Versi p11-kit sebagai gantinya membaca sertifikat dari toko sertifikat sistem.

Karena Firefox dikirimkan dengan versi sendiri libnssckbi.so, Anda harus melacaknya dan menggantinya daripada versi yang disediakan di 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

Selanjutnya, hapus file ~/.pki direktori untuk membuat Firefox menyegarkan basis data sertifikatnya (menyebabkannya menarik sertifikat sistem) setelah memulai ulang Firefox. Catatan: ini akan menghapus semua sertifikat yang ada di toko, jadi jika ada sertifikat khusus yang Anda tambahkan secara manual, Anda mungkin ingin mencadangkan folder itu dan kemudian mengimpor kembali.

kendaraan roda
sumber
Oh, wow, itu sedikit peretasan, tapi +1. Anda mungkin ingin menambahkan dpkg-divertlangkah untuk menghindari APT menimpa file lagi ketika Anda meningkatkan paket Firefox.
gertvdijk
@wheeler. Apakah Anda tahu apakah ini masih berfungsi? Saya sudah mencobanya dengan Ubuntu 18.04 dan setelah saya melakukan ini Firefox tidak akan memuat semua sertifikat sama sekali. Memiliki p11-kit 0,23.9-2
Kevin Vasko
1

Salah satu fitur dari add-on CCK Wizard Firefox adalah mengimpor sertifikat CA. Saya menggunakan pengaya ini untuk membuat pengaya khusus yang mencakup CA Cert perusahaan. Saya kemudian mengemas xpi kustom dalam. Deb pada repositori internal tempat semua workstation mendapatkan pembaruan.

Wisaya CCK

EDIT: Untuk mengemas xpi untuk Ubuntu, Anda perlu membuat paket yang menyertakan direktori / usr / lib / firefox-addons / extensions / [addon-name @ servername] dan unzip seluruh konten xpi ke direktori ini . Misalnya, jika Anda memberi nama addon foobarbaz dan server yang Anda setel untuk dimutakhirkan (jika Anda mengaktifkan fungsi itu) adalah intranet.example.com, maka direktori tersebut adalah [email protected]. Saya tidak pernah mengaktifkan pembaruan otomatis, melainkan memperbarui deb dalam repo.

Benjamin Long
sumber
Saya lebih suka metode ini daripada yang lain karena mandiri dan dapat mencakup satu ton penyesuaian lainnya di satu tempat. Penulis tampaknya telah menghapus ekstensi dari AMO. Sekarang dia memilikinya di situsnya sendiri di sini , dan xpi terbaru ada di sini .
Amit Naidu
1

Firefox berfungsi setelah instalasi bersih. Jika basis data sertifikat cert8.dbdihapus, itu dibuat ulang pada awal Firefox berikutnya. Ini sangat menyarankan bahwa ada penyimpanan standar sistem CA yang luas.

Kode sumber Firefox menunjukkan bahwa sertifikat CA bawaan memang sulit dikode menjadi firefoxexecutable. Mereka tinggal keamanan / nss / lib / ckfw / builtins / certdata.txt

Jadi tidak ada cara untuk menginstal seluruh sistem sertifikat. Waspadalah bahwa menambal kode sumber dapat memunculkan masalah dengan hak kekayaan intelektual.

yanychar
sumber
1

Saya menggunakan aplikasi "Virtualisasi Lingkungan Pengguna" (UEV) yang melakukan ini untuk pengguna saya, tetapi Anda dapat melakukan ini dengan skrip logon pada klien Windows sama saja. Saya tidak akan memposting semua kode untuk menemukan secara dinamis% APPDATA% \ Mozilla \ Firefox \% PROFILE% path, tetapi ketika Anda menemukannya, Anda dapat mengimpor skrip menggunakan beberapa perintah dasar. Saya pada dasarnya membaca file Firefox profiles.ini untuk menentukan jalur ke profil Firefox / cert8.db.

Anda mungkin ingin melihat menggunakan aplikasi certutil.exe. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

Anda dapat menjalankan skrip masuk untuk pengguna yang secara otomatis mengimpor sertifikat tepercaya dari lokasi pusat ke Firefox semua pengguna di sistem.

Berikut adalah "inti" dari skrip vb impor sertifikat saya:

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
Tony Massa
sumber
1

Saya menemukan bahwa sebagian besar waktu dan secara default jika tidak dikonfigurasi, Firefox menggunakan basis data keamanan lama (cert8.db, key3.db, dan secmod.db) yang berarti Anda harus menggunakan baris perintah yang berbeda untuk menyuntikkan sertifikat ke dalam database yang benar yang digunakan Firefox. (lihat lebih banyak dari pria certutil)

jadi jika sistem Anda menggunakan basis data default, perintahnya harus seperti ini: (dbm)

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

kalau tidak, harus seperti ini: (sql)

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

dari man 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
Asaf Magen
sumber
Menggunakan file .pem saya dengan certutilperintah pertama berhasil. Saya sedang mencari mengotomatiskan skrip pengaturan pengguna tunggal dan ini berhasil. Anda harus apt-get install libnss3-toolsmemilikinya certutil.
xificurC