Fügen Sie systemweit Zertifizierungsstellen in Firefox hinzu

27

Ich möchte einige Stammzertifizierungsstellen hinzufügen, die nicht mit dem Standard-Firefox unter Ubuntu geliefert werden, weiß aber nicht, wie.

Ich habe versucht, sie zu den lokalen Zertifikaten mit hinzuzufügen certutil, aber es hat nicht funktioniert. Es hat meine Zertifikatsdatenbank durcheinander gebracht.

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

und dann

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

Das Zertifikat wird in Firefox nicht angezeigt. Ich habe es mehrmals versucht, habe sogar das Profil gelöscht, und es wurde einmal auf der Firefox-Oberfläche angezeigt, war aber völlig leer.

Sowieso ist das nur für einen Benutzer, und ich möchte sie systemweit hinzufügen. Gibt es eine systemweite Datenbank, die ich ändern kann? Wie?

Wenn es keine systemweite Datenbank gibt, die ich ändern kann, kann ich mich auf ein X- /etc/X11/Xsession.d/Startskript (als solches oder ein Skript, das vom xdg-Autostart-System aufgerufen wird /etc/xdg/autostart/) verlassen, um das Benutzerprofil beim Sitzungsstart zu ändern, aber ich benötige eine Lösung dafür funktioniert. Ich kann nicht einmal Zertifikate von der Kommandozeile auf die Benutzerprofile laden!

Jorge Suárez de Lis
quelle
Ist das Bearbeiten des Standardprofils eine Option (sodass neu hinzugefügte Zertifikate hinzugefügt werden, wenn ein neues Profil erstellt wird, alte Profile jedoch unverändert bleiben)?
Andrea Corbellini
Nein, es gibt bereits ungefähr +100 Profile und neue Profile sind selten.
Jorge Suárez de Lis
Können Sie im Firefox-Verzeichnis keinen neuen Profilordner erstellen und diesen dann hinzufügen profiles.ini? Dann können Sie Ihre Änderungen hinzufügen und dann profiles.iniin jedes Benutzerverzeichnis kopieren .
Wilf
NB Sie können Profile für Firefox bearbeiten, indem Sie ausführen firefox -p- aber Sie müssen Firefox zuerst schließen.
Wilf
Nein, es gibt +100 Benutzer mit einem eigenen, bereits vorhandenen Profil. Sie werden nicht gerne ihre Lesezeichen, Geschichte, Passwörter usw. verlieren
Jorge Suárez de Lis

Antworten:

20

Das Problem hierbei ist, dass Firefox keinen "zentralen" Ort hat, an dem nach Zertifikaten gesucht wird. Es wird nur das aktuelle Profil angezeigt. Das ist der Grund, warum das Ändern /usr/share/ca-certificatesoder ähnliches von Verzeichnissen mit Firefox nicht funktioniert. Dies wird seit Jahren gefordert. Siehe Ausgaben 620373 , 449498 und 454036 (und wahrscheinlich gibt es viele andere).

Sie haben also nur zwei Arten von Lösungen: entweder jedes Profil ändern oder das Verhalten von Firefox ändern. Ich weiß, dass dies nicht das ist, wonach Sie suchen, aber es gibt keine Möglichkeiten, da Firefox nur die Benutzerprofile betrachtet.

Allerdings würde ich als Lösung harte oder symbolische Links wählen, insbesondere Hardlinks. Diese Lösung ist sicherlich die einfachste und wahrscheinlich die bessere, obwohl ich nicht genug Informationen habe, um zu beurteilen.

Was Sie tun müssen, ist grundsätzlich jede Entfernung cert8.dbund key3.dbDateien für jedes Profil und ersetzen sie durch Links auf die „kompletteste“ cert8.dbund key3.db. Wenn Sie mit Hardlinks gehen, wird das Original cert8.dbund key3.dbvon den neuen nicht zu unterscheiden sein.

Denken Sie daran, die Berechtigungen an Ihre Bedürfnisse anzupassen. Höchstwahrscheinlich müssen Sie, chmod a+rwdamit jeder ein Zertifikat hinzufügen / entfernen kann. Wenn Sie möchten, dass nur bestimmte Benutzer Zertifikate hinzufügen / entfernen können, können Sie eine Gruppe erstellen, die beiden Datenbanken dieser Gruppe zuweisen und +wnur der Gruppe die Berechtigung erteilen .

Andrea Corbellini
quelle
Genau so, wie ich es mir vorstellen konnte. Es ist ein bisschen schade für Firefox, imo.
Gertvdijk
Aber werden die Benutzerzertifikate nicht überschrieben? Werden die Benutzerzertifikate dort nicht gespeichert?
Jorge Suárez de Lis
@ JorgeSuárezdeLis: Nun, wenn Sie diese Dateien löschen, verlieren Sie die Zertifikate. Wenn Sie das mit "Überschreiben" meinen, dann ja. Sie sollten zuerst alle Datenbanken zu einer zusammenführen und dann die Hardlinks erstellen.
Andrea Corbellini
Aber ... ich möchte nicht, dass ein Benutzer die persönlichen Zertifikate der anderen Benutzer hat! Ich spreche jetzt über ihre Zertifikate, nicht über die Zertifizierungsstellen.
Jorge Suárez de Lis
@ JorgeSuárezdeLis: Entschuldigung, ich kann nicht verstehen: Was sind persönliche Zertifikate ?
Andrea Corbellini
15

Am einfachsten ist es, das Zertifikat in ein Beispiel-Firefox-Profil zu importieren und dann die Datei cert8.db an die Benutzer zu kopieren, die mit dem Zertifikat ausgestattet werden sollen.

Importieren Sie das Zertifikat zunächst von Hand in das Firefox-Profil des Beispielbenutzers. Dann kopieren

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

in die Benutzer Firefox-Profile. Das ist es. Wenn Sie sicherstellen möchten, dass neue Benutzer das Zertifikat automatisch erhalten, kopieren Sie cert8.dbnach:

/etc/firefox-3.0/profile

Hier ist eine alternative Methode, die die vorhandenen Zertifikate nicht überschreibt: [Bash-Fragment für Linux-Systeme]

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

Sie finden certutil möglicherweise im Paket libnss3-tools (debian / ubuntu).

Siehe auch: Programmatischer Import von CA-Zertifikaten

Quelle: Programmgesteuertes Installieren des Zertifikats in Mozilla

TomKat
quelle
+1 aber wenn Sie dies positiv bewerten, sollten Sie vielleicht auch die Antworten auf StackOverflow positiv bewerten, von denen dies abgeleitet wurde.
Tripleee
4

Entgegen der landläufigen Meinung, Sie können Firefox Blick auf die Systemzertifikate anstelle seiner eigenen hartcodierte Satz erhalten.

Dazu möchten Sie ein Paket namens p11-kit verwenden . p11-kit bietet einen Drop-In-Ersatz für libnssckbi.sodie gemeinsam genutzte Bibliothek, die die fest codierten Zertifikate enthält. Die p11-kit-Version liest stattdessen die Zertifikate aus dem Systemzertifikatsspeicher.

Da Firefox mit einer eigenen Version von ausgeliefert wird libnssckbi.so, müssen Sie diese aufspüren und anstelle der in libnss3 bereitgestellten Version ersetzen:

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

Löschen Sie anschließend das ~/.pkiVerzeichnis, damit Firefox die Zertifikatsdatenbank aktualisiert (wodurch die Systemzertifikate abgerufen werden), wenn Firefox neu gestartet wird. Hinweis: Dadurch werden alle vorhandenen Zertifikate im Speicher gelöscht. Wenn Sie also benutzerdefinierte Zertifikate manuell hinzugefügt haben, möchten Sie diesen Ordner möglicherweise sichern und anschließend erneut importieren.

Geschäftemacher
quelle
Oh, wow, das ist ein bisschen hacken, aber +1. Möglicherweise möchten Sie einen dpkg-divertSchritt hinzufügen , um zu vermeiden, dass APT die Datei beim Upgrade des Firefox-Pakets erneut überschreibt.
gertvdijk
@wheeler. Wissen Sie, ob das noch funktioniert? Ich habe es mit Ubuntu 18.04 ausprobiert und nachdem ich dies ausgeführt habe, lädt Firefox keines der Zertifikate. Have p11-kit 0.23.9-2
Kevin Vasko
1

Eine der Funktionen des Firefox-Add-Ons CCK Wizard ist das Importieren von CA-Zertifikaten. Ich verwende dieses Add-On, um ein benutzerdefiniertes Add-On zu erstellen, das ein CA Cert-Unternehmen enthält. Anschließend packe ich das benutzerdefinierte xpi in eine .deb-Datei im internen Repository, von der alle Arbeitsstationen Updates erhalten.

CCK-Assistent

BEARBEITEN: Um das xpi für Ubuntu zu packen, müssen Sie ein Paket erstellen, das das Verzeichnis / usr / lib / firefox-addons / extensions / [Addon-Name @ Servername] enthält, und den gesamten Inhalt des xpi in dieses Verzeichnis entpacken . Wenn Sie beispielsweise Ihr Addon foobarbaz benennen und der Server, von dem aus Sie es aktualisieren möchten (wenn Sie diese Funktion aktivieren möchten), intranet.example.com lautet, lautet das Verzeichnis [email protected]. Ich aktiviere niemals das automatische Update, sondern aktualisiere stattdessen die Deb im Repo.

Benjamin Long
quelle
Ich bevorzuge diese Methode gegenüber den anderen, weil sie in sich geschlossen ist und eine Menge anderer Anpassungen an einem Ort enthalten kann. Der Autor scheint seine Erweiterung von AMO entfernt zu haben. Jetzt hat er es auf seiner eigenen Seite hier , und die neueste xpi ist hier .
Amit Naidu,
1

Firefox funktioniert nach einer Neuinstallation. Wenn die Zertifikatsdatenbank in cert8.dbgelöscht wird, wird sie beim nächsten Firefox-Start neu erstellt. Dies deutet stark darauf hin, dass es einen systemweiten Standardspeicher für CA-Zertifikate gibt.

Der Quellcode von Firefox zeigt, dass die eingebauten CA-Zertifikate tatsächlich fest in die firefoxausführbare Datei codiert sind . Sie befinden sich in security / nss / lib / ckfw / builtins / certdata.txt

Es gibt also keine Möglichkeit, ein Zertifikat systemweit zu installieren. Beachten Sie, dass das Patchen von Quellcode Probleme mit Rechten an geistigem Eigentum verursachen kann.

yanychar
quelle
1

Ich verwende eine UEV-Anwendung (User Environment Virtualization), die dies für meine Benutzer ausführt. Sie können dies jedoch auch mit Anmeldeskripts in Windows-Clients ausführen. Ich werde nicht den gesamten Code veröffentlichen, um den Pfad% APPDATA% \ Mozilla \ Firefox \% PROFILE% dynamisch zu finden, aber wenn Sie ihn finden, können Sie die Skripte mit einigen grundlegenden Befehlen importieren. Grundsätzlich lese ich die Datei Firefox profiles.ini, um den Pfad zum Firefox-Profil / cert8.db zu ermitteln.

Möglicherweise möchten Sie die Anwendung certutil.exe verwenden. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

Sie können Anmeldeskripts für Benutzer ausführen, die die vertrauenswürdigen Zertifikate automatisch von einem zentralen Speicherort in den Firefox aller Benutzer im System importieren.

Hier ist der "Kern" meines Zertifikatsimport-VB-Skripts:

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
quelle
1

Ich habe herausgefunden, dass Firefox die meiste Zeit und standardmäßig, sofern nicht anders konfiguriert, ältere Sicherheitsdatenbanken (cert8.db, key3.db und secmod.db) verwendet, was bedeutet, dass Sie eine andere Befehlszeile verwenden müssen, um das Zertifikat einzuspielen die richtige Datenbank, die Firefox verwendet. (sehen Sie mehr vom Mann von certutil)

Wenn Ihr System die Standarddatenbank verwendet, sollte der Befehl folgendermaßen lauten: (dbm)

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

ansonsten sollte es so sein: (sql)

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

vom Mann 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
quelle
Die Verwendung meiner PEM-Dateien mit dem ersten certutilBefehl hat funktioniert. Ich habe nach einer Automatisierung eines Einrichtungsskripts für einen einzelnen Benutzer gesucht, und dies ist der Trick. Du musst apt-get install libnss3-toolshaben certutil.
XificurC