Alle bekannten grafischen Webbrowser werden mit einer Sammlung bekannter und vertrauenswürdiger Zertifizierungsstellenzertifikate (CA) ausgeliefert. Wenn Sie also eine Website mit einem von einem dieser CA-Zertifikate signierten Zertifikat besuchen, vertraut der Browser der Website ebenfalls. Andernfalls durchläuft der Browser eine Reihe von Warnungen und Optionen zum Hinzufügen einer Ausnahme, nachdem er Sie aufgefordert hat, das Zertifikat zu bestätigen. Es gibt auch Optionen zum Importieren zusätzlicher CA-Zertifikate, wie z. B. die für Firefox dokumentierten.
CA-Zertifikate mit Befehlszeilenprogrammen verwenden
CA-Zertifikate können auch über die Befehlszeile verfügbar gemacht werden. Ein Paket, das in vielen Distributionen, einschließlich Red Hat Enterprise Linux und Fedora, enthalten ist, heißt ca-certificates
. Dieses Paket enthält nach eigener Beschreibung „den Satz von CA-Zertifikaten, die von der Mozilla Foundation für die Verwendung mit der Internet-PKI ausgewählt wurden“. Dieses Paket enthält dieselben bekannten CA-Zertifikate wie in Firefox. Es kann von jeder CLI-Anwendung verwendet werden, die direkt auf /etc/pki/ca-trust/extracted
schaut Verzeichnis, zusammen mit den CLI-Anwendungen, die eines der PKCS#11-Vertrauensmodule laden.
Befehlszeilenprogramme wie curl
und wget
kann diese CA-Zertifikate verwenden, um Serverzertifikate zu validieren. Viele mit Red Hat Enterprise Linux bereitgestellte Tools verwenden diese Zertifikate auch, einschließlich für Interaktionen mit dem Red Hat-Support (redhat-support-tool
), Red Hat OpenShift-Cluster (oc
) und Red Hat Satellite 6-Server (hammer
). Viele andere Interaktionen mit Server-API-Schnittstellen verwenden ebenfalls SSL/TLS und sollten die angebotenen Zertifikate validieren.
Mit den ca-certificates
Paket installiert, kann ich curl
verwenden um URL-Inhalte von einer Website mit einem von einer bekannten Zertifizierungsstelle signierten Zertifikat fehlerfrei anzuzeigen oder herunterzuladen:
$ curl https://access.redhat.com -o /tmp/sample
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 103k 0 103k 0 0 339k 0 --:--:-- --:--:-- --:--:-- 337k
Wenn ich versuche, auf eine interne Website zuzugreifen, die ein selbstsigniertes Zertifikat hat (oder ein Zertifikat, das von einer Zertifizierungsstelle signiert ist, die nicht in den ca-certificates
Paket) erhalte ich eine Meldung, dass die Verbindung abgelehnt wurde, weil das Zertifikat nicht vertrauenswürdig ist:
$ curl https://somehost.internal-FQDN/
curl: (60) SSL certificate problem: self-signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Einige Dokumentationen empfehlen eine einfache unsichere Verbindung für diese internen und vertrauenswürdigen Sites. Curl kann sich mit dem -k
unsicher verbinden Möglichkeit:
$ curl -k https://somehost.internal-FQDN/
Oder, wenn ich mein internes CA-Zertifikat verifiziert und heruntergeladen habe, kann ich curl
mitteilen um die Seite mit diesem Zertifikat zu verifizieren:
$ curl --cacert /path/to/cert-file https://somehost.internal-FQDN/
Andere Programme sind ähnlich. Mit dem OpenShift- und Origin Tool zum Verwalten von Anwendungen (oc
) erkennt eine Verbindung zu einem standardmäßig installierten Cluster möglicherweise das generierte, selbstsignierte CA-Zertifikat nicht, das der Cluster zum Signieren anderer interner Zertifikate verwendet. Dieses Problem beinhaltet eine Verbindung zu CodeReady Containers:
$ oc login -u developer -p developer https://api.crc.testing:6443
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others. Use insecure connections? (y/n):
Wenn Sie eine Kopie der Zertifikate haben, geben Sie das Client-Zertifikat mit --client-certificate=""
an Option oder das CA-Zertifikat mit dem --certificate-authority=""
Option, wenn Sie den oc
verwenden Befehl.
Red Hat Satellite Server und das CLI-Tool hammer
funktionieren ähnlich, aber das CA-Zertifikat kann in der Befehlszeile oder in ~/.hammer/cli_config.yml
angegeben werden Datei. Der hammer
Der Befehl hat auch die Option, das Satellite-CA-Zertifikat direkt in die Datei .hammer
des Benutzers zu importieren Konfigurationsverzeichnis:
$ hammer --fetch-ca-cert https://satellite.example.com
CA certificate for https://satellite.example.com was stored to
..output omitted...
Dieser Befehl macht das Zertifikat nur für den einzelnen Benutzer verfügbar und müsste für jeden Benutzer auf dem System wiederholt werden. Um das Zertifikat allen Benutzern auf einem System zur Verfügung zu stellen, schlägt die Ausgabe des Hammer-Befehls sogar vor, ca-certificates
zu verwenden .
Aktualisieren von ca-certificates
Websites mit einem internen CA-Zertifikat zu validieren
Anstatt das CA-Zertifikat bei jedem Befehl manuell anzugeben, können wir unsere internen CA-Zertifikate dem CA-Vertrauen hinzufügen, das von ca-certificates
bereitgestellt wird Paket. Dieses Paket stellt eine Verzeichnisstruktur in /etc/pki/
bereit zur Verwaltung der Zertifikate und einen Befehl update-ca-trust
um die "konsolidierte und dynamische Konfiguration von CA-Zertifikaten und zugehörigem Vertrauen zu verwalten:"
$ ls /etc/pki/ca-trust/
ca-legacy.conf extracted README source
$ ls /etc/pki/ca-trust/source
anchors blacklist ca-bundle.legacy.crt README
Um ein Zertifikat hinzuzufügen, laden Sie es herunter und platzieren Sie es in /etc/pki/ca-trust/source/anchors
Verzeichnis und führen Sie dann den Befehl update-ca-trust
aus . Für diese beiden Aufgaben müssen Sie als Root angemeldet sein:
$ sudo curl http://satellite.example.com/pub/katello-server-ca.crt -o /etc/pki/ca-trust/source/anchors/satellite-ca.crt
$ sudo update-ca-trust
Sobald der Aktualisierungsbefehl ausgegeben wurde, wird das Zertifikat über /etc/pki/ca-trust/extracted
verfügbar gemacht Baum:
$ ls /etc/pki/ca-trust/extracted
edk2 java openssl pem README
Anwendungen, die auf dieses Verzeichnis zugreifen, um Zertifikate zu überprüfen, können jedes der bereitgestellten Formate verwenden. Der Aktualisierungsbefehl verarbeitet die Kopien, Konvertierungen und Konsolidierungen für die verschiedenen Formate. Die Manpage für update-ca-trust
enthält weitere Informationen über die Verzeichnisstruktur, Formate und Möglichkeiten, wie auf Zertifikate zugegriffen wird, aber mit dem folgenden awk
können Sie schnell alle Zertifikatssubjekte im Paket auflisten und openssl
Befehle:
$ awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Nachdem ich das CA-Zertifikat für meinen Satellitenserver hinzugefügt habe, kann ich curl
verwenden ohne zusätzliche Zertifikatsoptionen für den Zugriff auf die API:
$ curl --request GET --user admin https://satellite.example.com/katello/api/organizations
Enter host password for user 'admin':
{ "total": 1, "subtotal": 1,
...output omitted...
Dasselbe gilt für oc
Befehle, hammer
Befehle und viele andere Befehlszeilenanwendungen. Diese Dienstprogramme können die von ca-trust
verwalteten Zertifikate verwenden um Ihre Verbindungen zu validieren.
[Möchten Sie mehr über Sicherheit erfahren? Sehen Sie sich die Checkliste für IT-Sicherheit und Compliance an.]