Ich habe zusammengefasst, dass ich mein eigenes Stammzertifizierungsstellenzertifikat installieren muss. Wenn Sie verschiedene Tools und Anwendungen verwenden, können Sie nicht sagen, dass das Einstellen im Betriebssystem sicher ist, und es gibt viele Dinge, die zusätzlich zu den Betriebssystemeinstellungen individuell festgelegt werden müssen.
In diesem Artikel wird beschrieben, wie Sie Ihr eigenes Stammzertifizierungsstellenzertifikat für die folgenden Umgebungen und Tools festlegen:
Ubuntu (18.04)
Erstellen Sie ein geeignetes (nicht schlampiges) Verzeichnis unter "/ usr / share / ca-certificates /". Hier ist es * mylokal *. (Im Folgenden wird es als "/ usr / share / ca-certificates /" * mylocal * "/" bezeichnet.) Das Verzeichnis dient zur Organisation nach Verwaltungsorganisationseinheiten. (Wahrscheinlich gibt es ein Verzeichnis namens "Mozilla /", aber ich werde es nicht berühren) Sie müssen kein Verzeichnis haben, aber ich denke, es ist einfacher, lokale später zu verwalten, wenn Sie sie in einem Verzeichnis organisieren.
Legen Sie die Zertifikatdatei unter den erstellten Ordner * mylocal *.
Hier ist es * mylocal-root-cacert.crt *. (/usr/share/ca-certificates/
mylocal/mylocal-root-cacert.crt)
Fügen Sie in / etc / ca-certificates.conf
den relativen Pfad unter / usr / share / ca-certificates /
der hinzugefügten Datei hinzu.
Fügen Sie im obigen Beispiel "* mylocal * / * mylocal-root-cacert.crt *" hinzu.
Führen Sie "update-ca-certificates" ("/ usr / sbin / update-ca-certificates") aus.
Stellen Sie sicher, dass Sie einen symbolischen Link zu / usr / share / ca-certificates /
* mylocal * / * mylocal-root-cacert.crt * unter / etc / ssl / certs /
haben Bitte gib mir.
Ubuntu18.CA-Aktualisierungsverfahren in 04
# cd /usr/share/ca-certificates
# mkdir mylocal
# cp somewhere/mylocal-root-cacert.crt mylocal/
# cp -p /etc/ca-certificates.conf /etc/ca-certificates.conf.bak
# echo "mylocal/mylocal-root-cacert.crt" >> /etc/ca-certificates.conf
# update-ca-certificates
# ls -l /etc/ssl/certs/ | grep mylocal-root-cacert
Wenn dies korrekt durchgeführt wird, wird außerdem eine / etc / ssl / certs / ca-certificates.crt
mit allen CA-Zertifikaten als CA-Bundle erstellt. Lesen Sie dies gegebenenfalls. Dann wäre es gut. Wenn Sie beispielsweise den Pfad des CA-Bundles im Argument "request ()" in Python angeben möchten.
update-ca-certificates
aktualisiert automatisch / etc / ssl / certs / ca-certificates.crt
, daher ist es strengstens verboten, eigene hinzuzufügen.
Red Hat / CentOS (7)
Siehe: [Red Hat Enterprise Linux 7 | Red Hat-Kundenportal - Verwenden freigegebener Systemzertifikate](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/sec-shared] -Systemzertifikate)
Platzieren Sie die Zertifikatdatei unter "/ usr / share / pki / ca-trust-source / anchor /" und führen Sie "update-ca-trust" aus.
# cp somewhere/mylocal-root-cacert.crt /usr/share/pki/ca-trust-source/anchors/
# update-ca-trust
# ls -l /etc/pki/ca-trust/extracted/openssl/
Gleiches gilt unter / etc / pki / ca-trust / source / anchor /.
/ usr / share / pki dient der Abwärtskompatibilität und die Einstellung von
/ etc / share / pki` hat Vorrang.
Das Zertifikat befindet sich unter "/ usr / share / pki / ca-trust-source / anchor /", sodass es für beide festgelegt werden kann.
Derzeit wird die Angabe eines Arguments für "update-ca-trust" ignoriert. Wenn Sie jedoch in das Skript schauen, heißt es in dem Kommentar, dass es in Zukunft "update-ca-trust extract" unterstützen wird. ..
(CentOS7) /bin/update-ca-trust
#!/bin/sh
#set -vx
# At this time, while this script is trivial, we ignore any parameters given.
# However, for backwards compatibility reasons, future versions of this script must
# support the syntax "update-ca-trust extract" trigger the generation of output
# files in $DEST.
DEST=/etc/pki/ca-trust/extracted
# OpenSSL PEM bundle that includes trust flags
# (BEGIN TRUSTED CERTIFICATE)
/usr/bin/p11-kit extract --comment --format=openssl-bundle --filter=certificates --overwrite $DEST/openssl/ca-bundle.trust.crt
/usr/bin/p11-kit extract --comment --format=pem-bundle --filter=ca-anchors --overwrite --purpose server-auth $DEST/pem/tls-ca-bundle.pem
/usr/bin/p11-kit extract --comment --format=pem-bundle --filter=ca-anchors --overwrite --purpose email $DEST/pem/email-ca-bundle.pem
/usr/bin/p11-kit extract --comment --format=pem-bundle --filter=ca-anchors --overwrite --purpose code-signing $DEST/pem/objsign-ca-bundle.pem
/usr/bin/p11-kit extract --format=java-cacerts --filter=ca-anchors --overwrite --purpose server-auth $DEST/java/cacerts
Verwenden Sie den Befehl "trust", um das von Ihnen festgelegte vertrauenswürdige CA-Zertifikat zu verwalten.
Vertrauensbefehl
$ trust
usage: trust command <args>...
Common trust commands are:
list List trust or certificates
extract Extract certificates and trust
extract-compat Extract trust compatibility bundles
anchor Add, remove, change trust anchors
dump Dump trust objects in internal format
See 'trust <command> --help' for more information
Sie können die konfigurierte Zertifizierungsstelle mit dem Befehl trust löschen oder ändern, dieser wird jedoch hier weggelassen.
Python - certifi/requests/ssl
**Hinweis! !! : Überprüfen Sie die Betriebssystemeinstellungen, bevor Sie ein Zertifikat für die Python-Umgebung hinzufügen. ** **.
Fassen Sie die Einstellungen des von Python verwendeten Moduls certifi / request / ssl zusammen.
Wenn Sie Anforderungen verwenden, hängt dies vom Zertifikatspaket ab (seit Anforderung 2.4 verwenden Sie Zertifikate. Siehe: CA-Zertifikate /de/v2.7.0/user/advanced/#ca-certificates)) Wenn es sich also von der Betriebssystemreferenz unterscheidet, fügen Sie es dem CA-Zertifikatspaket hinzu.
From Requests version 2.4.0 onwards, Requests will attempt to use certificates from certifi if it is present on the system. This allows for users to update their trusted certificates without having to change the code that runs on their system.
Sie können das Referenzziel wie folgt überprüfen.
certifi/Bestätigung des Zertifikatspakets für Anfragen
$ python3 -c "import certifi; print(certifi.where())"
/etc/ssl/certs/ca-certificates.crt
$ python3 -c "import requests;print(requests.__version__)"
2.22.0
$ python3 -c "import requests; print(requests.certs.where())"
/etc/ssl/certs/ca-certificates.crt
Wenn Sie auf dieselben Betriebssystemeinstellungen verweisen (z. B. / etc / ssl / certs / ca-certificates.crt
für Ubuntu 18.04 openssl), müssen Sie keine eigenen hinzufügen.
Wenn Sie auf eine Datei verweisen, die sich vom Betriebssystem unterscheidet (z. B. in einer virtuellen Umgebung), fügen Sie der Datei im angezeigten Pfad ein Zertifikat im Textformat hinzu, und Sie sind fertig.
Ich mache das gleiche mit dem Python-Skript unten. Legen Sie das Installationszertifikat im aktuellen Verzeichnis als "mylocal-root-cacert.crt" ab und führen Sie das Python-Skript aus.
local_ca_install.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import certifi
cabundle = certifi.where()
local_rootCA = 'mylocal-root-cacert.crt'
print( 'read from {}'.format( local_rootCA ) )
with open( local_rootCA, 'rb' ) as infile:
myrootca = infile.read()
print( 'append to {}'.format( cabundle ) )
with open( cabundle, 'ab' ) as outfile:
outfile.write( myrootca )
print( '{} has been imported.'.format( local_rootCA ) )
Ausführungsergebnis
(pythonsample) $ python local_ca_install.py
read from mylocal-root-cacert.crt
append to /home/.../envs/pythonsample/lib/python3.6/site-packages/certifi/cacert.pem
mylocal-root-cacert.crt has been imported.
(pythonsample) $
Überprüfen Sie das Referenzziel des SSL-Moduls. Selbst wenn das referenzierte Verzeichnis unterschiedlich ist, verweist der symbolische Link möglicherweise auf dasselbe Verzeichnis / dieselbe Datei wie request / certifi. Überprüfen Sie daher auch das referenzierte Verzeichnis.
Bestätigung des Zertifikatspakets für ssl
$ python3 -c "import ssl; print(ssl.get_default_verify_paths())"; (set -x; ls -l /usr/lib/ssl)
DefaultVerifyPaths(cafile=None, capath='/usr/lib/ssl/certs', openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/usr/lib/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/usr/lib/ssl/certs')
+ ls -l /usr/lib/ssl
total 4
lrwxrwxrwx 1 root root 14 Apr 23 2018 certs -> /etc/ssl/certs
drwxr-xr-x 2 root root 4096 Nov 20 06:52 misc
lrwxrwxrwx 1 root root 20 Nov 13 01:58 openssl.cnf -> /etc/ssl/openssl.cnf
lrwxrwxrwx 1 root root 16 Apr 23 2018 private -> /etc/ssl/private
Wenn sich die referenzierte Entität unterscheidet, konfigurieren Sie sie so, dass sie dieselbe Konfiguration wie das openssl-Verzeichnis hat oder auf das CA-Bundle verweist.
Sie können das Referenzziel mithilfe der Umgebungsvariablen ändern.
REQUESTS_CA_BUNDLE
--requestsSiehe auch: SSL-Zertifizierungsüberprüfung (https://2.python-requests.org/en/v2.7.0/user/advanced/?highlight=requests_ca_bundle#ssl-cert-verification)
Wenn Sie * Anforderungen verwenden, setzen Sie die Umgebungsvariable "REQUESTS_CA_BUNDLE" auf "CA Bundle" (dh "/home/.../envs/pythonsample/lib/python3.6/site-packages/certifi/cacert.pem") Durch Setzen von `bezieht sich request () auf diese Zertifizierungsstelle.
Obwohl es sich nicht um eine Umgebungsvariable handelt, können Sie den Pfad der CA Bundle-Datei als Argument für request.get / post angeben (request.get (..., verify = '* Pfad zur CA Bundle-Datei *). ') ist). Beachten Sie jedoch, dass der Pfad weniger vielseitig ist, wenn Sie ihn fest codieren.
Die Einstellung "Verifizieren" auf "Falsch" ist das letzte Mittel. Wir empfehlen, dass Sie es für einen vorübergehenden Test aufbewahren.
SSL_CERT_DIR
und SSL_CERT_FILE
--sslGleiches gilt für Conda / Anaconda.
Wenn Sie Anaconda verwenden, fügen Sie das Zertifikat dem Cabundle of Certifi in der Conda-Umgebung hinzu. Unter Windows usw. kann es je nach Installationsort erforderlich sein, versteckte Dateien (Ordner) anzuzeigen, z. B. unter AppData.
Wenn Sie eine virtuelle Python-Umgebung verwenden, müssen Sie jede virtuelle Umgebung konfigurieren.
Mozilla Firefox
Firefox unter Microsoft Windows wird in einem von Microsoft Windows getrennten Zertifikatspeicher verwaltet (unter Linux und MacOS nicht bestätigt), daher muss es getrennt von den Zertifikateinstellungen für Microfoft Windows verwaltet werden. (Nicht bestätigt, aber es scheint, dass es für jedes Profil festgelegt werden muss)
[Option]
--[Datenschutz und Sicherheit]
-" Zertifikat "- [Zertifikat anzeigen ... (C)]
--[Zertifikat der Zertifizierungsstelle]
--[Import (M). ..]
ist das Lesen des Zertifikats.
Wenn Sie Firefox verwenden, sollte diese Erklärung ausreichen.
Firefox: How to audit & reset the list of trusted servers/CAs - Red Hat Customer Portal
Mozilla Thunderbird
Thunderbird wird in einem von Microsoft Windows getrennten Zertifikatspeicher verwaltet (unter Linux und MacOS nicht bestätigt). Daher muss es separat vom Festlegen des Zertifikats in Microfoft Windows verwaltet werden. (Nicht bestätigt, aber es scheint, dass es für jedes Profil festgelegt werden muss)
[Option]
--[Details]
-- [Zertifikat]
(Tab) --[Zertifikate verwalten (M)]
-- [Zertifikat der Zertifizierungsstelle]
--[Import (M). ..]
ist das Lesen des Zertifikats.
Windows 10
Halten Sie die Windows-Taste gedrückt und drücken Sie die Taste " R
". Das Dialogfeld "Ausführen" wird angezeigt. Geben Sie "certmgr.msc" ein, um es auszuführen. (Wenn das Dialogfeld UAC (User Access Control) angezeigt wird, wählen Sie Ja, um es auszuführen.) "Zertifikat-aktueller Benutzer" wird angezeigt. Klicken Sie mit der rechten Maustaste auf "Vertrauenswürdige Stammzertifizierungsstellen" - "Zertifikate" und klicken Sie auf "Alle Aufgaben" - "Importieren ...". Das Dialogfeld Zertifikatimport-Assistent wird angezeigt. Folgen Sie dem Assistenten, um das Zertifikat zu importieren.
Klicken Sie auf Weiter und wählen Sie unter Durchsuchen das zu lesende Zertifikat aus.
Wählen Sie ein Zertifikat aus und klicken Sie auf Öffnen. Sie kehren zum ursprünglichen Fenster zurück, klicken Sie also auf [Weiter].
Wählen Sie in der Auswahl "Zertifikatspeicher" die Option "Alle Zertifikate im folgenden Speicher ablegen" und im Pulldown-Menü "Vertrauenswürdige Stammzertifizierungsstellen" aus. Weiter klicken].
Ein Bestätigungsbildschirm wird angezeigt. Wenn keine Fehler vorliegen, klicken Sie auf [Fertig stellen].
Wenn die Meldung "Erfolgreich importiert" angezeigt wird, ist der Vorgang abgeschlossen.
Schließen Sie certmgr, wenn Sie es nicht mehr benötigen.
Abgesehen davon können Sie das Zertifikat nicht anzeigen und importieren, wenn bei Verwendung eines Remotedesktops in einer lokalen Umgebung eine Warnung angezeigt wird, sondern es in eine Datei exportieren und mit der oben beschriebenen Methode festlegen. Die Warnung verschwindet. (Ich kenne den Grund nicht, aber manchmal ist die Warnung nicht verschwunden, selbst wenn ich das Zertifikat im Warndialog angezeigt und so importiert habe, wie es war.)
Splunk
In Splunk müssen Sie die folgenden Einstellungen für die SSL-Kommunikation vornehmen.
Die dritte Einstellung wird hier weggelassen.
Im folgenden Beispiel ist es "SPLUNK_HOMOE = / opt / splunk".
$ /opt/splunk/bin/splunk cmd python -c "import requests; print(requests.certs.where())"
/opt/splunk/lib/python2.7/site-packages/certifi/cacert.pem
$ /opt/splunk/bin/splunk cmd python -c "import certifi; print(certifi.where())"
/opt/splunk/lib/python2.7/site-packages/certifi/cacert.pem
$
$ /opt/splunk/bin/splunk cmd python3 -c "import requests; print(requests.certs.where())"
/opt/splunk/lib/python3.7/site-packages/certifi/cacert.pem
$ /opt/splunk/bin/splunk cmd python3 -c "import certifi; print(certifi.where())"
/opt/splunk/lib/python3.7/site-packages/certifi/cacert.pem
$
Ich denke, wir werden in Zukunft auf Python3 umsteigen, aber vorerst hängen vorhandene Apps von Python2 ab, daher müssen wir auch Python2 berücksichtigen.
Einige Apps haben ihre eigene cacert.pem in Site-Paketen und verweisen darauf, daher müssen Sie diese ebenfalls unterstützen.
splunk Unter dem Haus cacert.pem Suchbeispiel
$ (cd /opt/splunk; sudo find . -name cacert.pem -ls)
49024396 276 -r--r--r--1 splunk splunk 282085 16. Juni 2019./lib/python2.7/site-packages/certifi/cacert.pem
48893114 268 -r--r--r--1 splunk splunk 271088 9. August 03:32 ./lib/python2.7/site-packages/botocore/cacert.pem
49024315 268 -r--r--r--1 splunk splunk 271088 9. August 03:32 ./lib/python2.7/site-packages/botocore/vendored/requests/cacert.pem
49155480 276 -r--r--r--1 splunk splunk 282085 16. Juni 2019./lib/python3.7/site-packages/certifi/cacert.pem
49026412 268 -r--r--r--1 splunk splunk 271088 9. August 03:32 ./lib/python3.7/site-packages/botocore/cacert.pem
49155400 268 -r--r--r--1 splunk splunk 271088 9. August 03:32 ./lib/python3.7/site-packages/botocore/vendored/requests/cacert.pem
39325129 4 -rw-------1 splunk splunk 1265 9. August 2018./etc/auth/cacert.pem
41816513 344 -rw-r--r--1 Splunk Splunk 348799 20. Februar 2019./etc/apps/splunk_app_addon-builder/bin/splunk_app_add_on_builder/requests/cacert.pem
41943696 344 -rw-r--r--1 Splunk Splunk 348799 20. Februar 2019./etc/apps/splunk_app_addon-builder/bin/ta_generator/resources_lib/requests/cacert.pem
40370693 304 -rw-r--r--1 splunk splunk 308434 18. September 2018./etc/apps/Splunk_SA_Scientific_Python_linux_x86_64/bin/linux_x86_64/lib/python2.7/site-packages/pip/_vendor/requests/cacert.pem
40371155 340 -rw-r--r--1 splunk splunk 344712 18. September 2018./etc/apps/Splunk_SA_Scientific_Python_linux_x86_64/bin/linux_x86_64/lib/python2.7/site-packages/requests/cacert.pem
$
Wenn Sie die Einstellungen an Ihr Betriebssystem anpassen möchten, sollten Sie sich / etc / ssl / certs / ca-certificates.crt
(für Ubuntu) ansehen.
${SPLUNK_HOME}/etc/system/local/server.conf
[sslConfig]
sslRootCAPath = /etc/ssl/certs/ca-certificates.crt
Ich konnte keine Beschreibung finden, wie ich es offiziell einstellen sollte. (Nachuntersuchung erforderlich)
Recommended Posts