GNU/Linux >> LINUX-Kenntnisse >  >> Linux

CA-Zertifikate für Linux-Befehlszeilentools verfügbar machen

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.]


Linux
  1. Erstellen einer Wiederherstellungspartition in Embedded Linux?

  2. Befehlszeilenverlauf in Linux

  3. Befehlszeilen-Texteditoren unter Linux

  4. Fehler im Browser des SSL-Zertifikats

  5. Leichte X11-Alternative verfügbar?

So installieren Sie Entwicklungstools unter Linux

Linux-Tools:du vs. df

Leitfaden zur Installation von VMware Tools unter Linux

Linux – Diagramm des Linux-Kernels vs. Performance-Tools?

Top 10 Linux-Distributionen

Die 10 besten derzeit verfügbaren Linux-Schnelllesetools