Standardspeicherort für CA Cert-Bundles


18

Ich muss meinem Standard-CA-Zertifizierungspaket eine PEM-Zertifizierungsdatei hinzufügen, weiß jedoch nicht, wo das Standard-CA-Zertifizierungspaket aufbewahrt wird.

Ich muss meine neue PEM-Datei an dieses Standardpaket anhängen. Ich würde das lieber tun, als meinen eigenen Standort mit --capath anzugeben

cURL weiß genau, wo es zu suchen ist, aber ich sehe keine cURL-Befehle, die die Position offenbaren. Gibt es einen Befehl, der diesen Ort enthüllt? Wie kann ich es finden?

Laut cURL:
Fügen Sie das CA-Zertifikat für Ihren Server zum vorhandenen Standard-CA-Zertifikat-Bundle hinzu. Der Standardpfad des verwendeten CA-Bundles kann geändert werden, indem Sie configure mit der Option --with-ca-bundle ausführen und den Pfad Ihrer Wahl angeben.

Vielen Dank


Welches Betriebssystem verwenden Sie?
Cristian Ciupitu

Antworten:


20

Laufen curlmit stracekönnte Ihnen einen Hinweis geben.

Strace Curl https://www.google.com | & grep öffnen

Viele Ausgaben, aber kurz vor dem Ende sehe ich:

open ("/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

In diesem Ordner werden meine Zertifikate gespeichert.


2
+1 für das Zeigen von mir über strace!
Robert Dundon

straceanscheinend nicht auf macOS verfügbar. Das "Äquivalent" dtrusssagte mir "dtrace: dtrace konnte nicht initialisiert werden: DTrace erfordert zusätzliche Berechtigungen". Also habe ich sudoes benutzt. Auf die es antwortete "Dtrace: Curl konnte nicht ausgeführt werden: Dtrace kann keine ausführbaren Dateien steuern, die mit eingeschränkten Berechtigungen signiert sind". Nicht sehr hilfreich.
LS

17

Es sollte ein Programm 'curl-config' in curls 'bin /' geben, dh wo sich die 'curl'-Binärdatei befindet.

./curl-config --ca

gibt den Installationspfad für das ca-Bundle an.

Ich habe gerade eine whatis-curl-Konfiguration durchgeführt: "Informationen über eine libcurl-Installation abrufen". Ich denke, diese ist nur verfügbar, wenn libcurl installiert wurde.


1
Ich musste ein Paket auf Ubuntu installieren, um dies auszuführen (es wird eine Liste der verfügbaren Optionen angezeigt, wenn es nicht installiert ist), aber die Verwendung dieses Befehls führte mich an die richtige Stelle!
Robert Dundon

2
Das curl-configProgramm ist nicht für alle Versionen des Programms oder der Installationen verfügbar. Einige Administratoren verstehen möglicherweise nicht den Zweck des Programms und installieren es nicht, weil sie glauben, dass es sich nur um ein Build-Konfigurations-Tool handelt. Wenn der Benutzer, der das Programm benötigt, nicht der Administrator eines Systems ist, kann er es nicht installieren. Ich habe Zugriff auf zwei Systeme, eines hat dieses Programm nicht, das andere gibt keine Ausgabe für aus curl-config --ca.
LS

Ich bevorzuge diese Antwort der akzeptierten - es stracesollte nicht erforderlich sein, Konfigurationsinformationen zu finden.
Ken Williams

7

Ich habe einen einfachen Weg gefunden: Benutze den --cacertmit einem falschen Dateinamen, die Ausgabe wird den Pfad anzeigen.

Beispiel:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs

Ich dachte, das sieht nach einer guten Lösung aus. Allerdings gab mir curl den "77" -Fehler, nicht aber die Zusatzinformation.
LS

@LS füge das
Verbose-

2

Linux (Ubuntu, Debian)

Kopieren Sie Ihre CA nach dir / usr / local / share / ca-certificates /

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Aktualisieren Sie den CA-Speicher

sudo update-ca-certificates

Entfernen Sie Ihre Zertifizierungsstelle und aktualisieren Sie den Zertifizierungsstellenspeicher:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Installieren Sie das Paket "ca-certificates":

yum install ca-certificates

Aktivieren Sie die dynamische CA-Konfigurationsfunktion: update-ca-trust force-enable Fügen Sie sie als neue Datei hinzu, um /etc/pki/ca-trust/source/anchors/:

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Linux (CentOs 5)

Hängen Sie Ihr vertrauenswürdiges Zertifikat an die Datei an /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/de/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html Sehr schöner Link, der erklärt, wie man es zu mehreren populären Betriebssystemen hinzufügt.


Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Gerald Schneider

@GeraldSchneider> Sie Kommentar gelesen und gehandelt;)
BiG_NoBoDy

1

Sie können das CA Root Certificates-Bundle von haxx.se herunterladen, die die Entwickler von curl sind. Fügen Sie dann einfach Ihr Zertifikat in die .pem-Datei ein und beziehen Sie sich darauf, wenn Sie curl mit der Option --cacert verwenden


1

-v mit https in der URL.

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*

Nee. Für mich hat es so etwas nicht gezeigt. Tatsächlich habe ich die Ausgabe mit einem anderen Lauf verglichen und die -kOption hinzugefügt , um festzustellen, ob es einen Unterschied gibt. Es gab keinen Unterschied.
LS

@LS Hast du https in deiner URL?
Philip Rego

0

Der Standardspeicherort des CA-Bundles ist vom Betriebssystem abhängig. Auf RHEL5 befindet es sich in /etc/pki/tls/certs/ca-bundle.pem. Unter anderen Linux- oder Nicht-Linux-Betriebssystemen kann es sich um ein anderes Betriebssystem handeln.


Ich schätze, ich suche dann einfach nach dieser Datei ...
Slinky

2
Eine andere Idee: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.