centos:ca-trust

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
centos:ca-trust [09.02.2015 20:43. ] – [Import-Beispiel am CAcert Root-Zertifikat] djangocentos:ca-trust [10.02.2019 17:25. ] – [CA-Zertifikate unter CentOS 7] django
Zeile 1: Zeile 1:
-====== Vertrauensmodelle in Public-Key-Infrastrukturen ====== 
-<WRAP center round todo 80%> 
-**Aktuell in der Bearbeitung!** 
-</WRAP> 
  
-Bei der asymetrischen Verschlüsselung, wie sie bei SSL/TLS gesicherter Kommunikation zum Einsatz kommt, benötigt der sendende Kommunikationspartner den öffentlichen Schlüssel (public key) des Empfängers. Bei dieser Kommunikation ist es äußerst wichtig, dass die Echtheit des Schlüssels gewährleistet, sprich auch überprüft werden kann. Diese Überprüfung erfolgt mit digitalen Zertifikaten, die die Echtheit eines öffentlichen Schlüssels sowie den Geltungsbereich und die Anwendungsbereich für das Zertifikat bestätigen.  
- 
-{{ :centos:tls-003.png?direct&777 |BILD: schematische Darstellung des Vertrauensverhältnis beim PKI Modell}} 
- 
-Bei einer reinen 1:1 Kommunikation können sich beide Kommunikationspartner, oder der Client mit dem Server dieses Vertrauen selbst gegenseitig aussprechen. In den allermeisten Fällen wird es aber bei der verschlüsselten und vertraulichen Kommunikation um eine 1:n Kommunikation handeln; d.h. ein Server wird mit unter sehr vielen Clients Daten austauschen. Eine gegenseitige Vertrauensbildung ist hier in den allermeisten Fällen nicht realistisch und praktikabel durchführbar. 
- 
-Für die Überprüfung der Echtheit der zur Verschlüsselung verwendeten X.509-Zertifikates wird wiederum ein digitales Zertifikat einer **CA**((**C**ertificate **A**uthority)) oder kurz Zertifizierungsstelle verwendet. Diese CA bestätigt somit die Echtheit des Zertifikates. Eine Zertifikat (Root Zertifikat) einer CA selbst kann wiederum durch eine weitere **CA** beglaubigt worden sein. Somit ergibt sich eine Kette von Zertifikaten, bei der jedes Zertifikat mit dem Zertifikat der übergeordneten Stelle authentifiziert werden kann. Diese Vertrauenskette wird auch Zertifizierungspfad oder **//trusted chain//** bezeichnet. 
- 
-{{ :centos:tls-004.png?direct&777 |BILD: schematische Darstellung eines X.509 Zertifikates}} 
- 
-Ohne dem übergeordneten **Root Zertifikat** kann zwar verschlüsselt kommuniziert werden, wir wissen aber dabei nicht, ob der zur Verschlüsselung zugrundeliegender Schlüsselmaterials valide ist und ob der Gesprächspartner derjenige ist, den er vorzugeben scheint. 
- 
-<WRAP center round important 80%> 
- 
-Unserem Kommunikationssystem, egal ob das nun ein WEB-Browser oder ein Web- oder Mailserver ist, müssen wir nun also noch zwei Dinge beibringen.  
-  - **Root Zertifikate**: \\ Wir müssen die benötigten Root-Zertifikate unserem System zur Verfügung stellen. 
-  - **CA Vertrauen**: \\ Der jeweiligen **CA** und dessen **Root-Zertifikat** müssen wir noch explizit unser Vertrauen aussprechen 
-Ohne diese beiden essentiellen Maßnahmen, können wir zwar verschlüsselt Kommunizieren, wir wissen aber nicht, ob der Adressat derjenige ist den wir meinen und ob dieser die Daten auch wirklich entschlüsseln kann! 
-</WRAP> 
- 
-===== CA-Zertifikate unter CentOS 7 ===== 
-Die wichtigsten Zertifizierungsstellen und deren Root-Zertifikate müssen wir uns nun nicht alle einzeln auf diversen webseiten zusammensuchen. Mit Hilfe des RPM-Paketes **ca-certificates** können wir zum einen die wichtigsten, von der [[https://www.mozilla.org/en-US/foundation/|Mozilla Foundation]] ausgewählten, CAs zurückgreifen. 
-Bei der Grundinstallation unseres systems wurde bereits dieses Paket installiert; was es mitbrachte zeigt uns der folgende Aufruf. 
-   # rpm -qil ca-certificates 
- 
-<code>Name        : ca-certificates 
-Version     : 2014.1.98 
-Release     : 70.0.el7_0 
-Architecture: noarch 
-Install Date: Mon 09 Feb 2015 03:36:17 PM CET 
-Group       : System Environment/Base 
-Size        : 1029265 
-License     : Public Domain 
-Signature   : RSA/SHA256, Thu 18 Sep 2014 03:53:56 PM CEST, Key ID 24c6a8a7f4a80eb5 
-Source RPM  : ca-certificates-2014.1.98-70.0.el7_0.src.rpm 
-Build Date  : Thu 18 Sep 2014 02:11:36 PM CEST 
-Build Host  : worker1.bsys.centos.org 
-Relocations : (not relocatable) 
-Packager    : CentOS BuildSystem <http://bugs.centos.org> 
-Vendor      : CentOS 
-URL         : http://www.mozilla.org/ 
-Summary     : The Mozilla CA root certificate bundle 
-Description : 
-This package contains the set of CA certificates chosen by the 
-Mozilla Foundation for use with the Internet PKI. 
-/etc/pki/ca-trust 
-/etc/pki/ca-trust/README 
-/etc/pki/ca-trust/extracted 
-/etc/pki/ca-trust/extracted/README 
-/etc/pki/ca-trust/extracted/java 
-/etc/pki/ca-trust/extracted/java/README 
-/etc/pki/ca-trust/extracted/java/cacerts 
-/etc/pki/ca-trust/extracted/openssl 
-/etc/pki/ca-trust/extracted/openssl/README 
-/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt 
-/etc/pki/ca-trust/extracted/pem 
-/etc/pki/ca-trust/extracted/pem/README 
-/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem 
-/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem 
-/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem 
-/etc/pki/ca-trust/source 
-/etc/pki/ca-trust/source/README 
-/etc/pki/ca-trust/source/anchors 
-/etc/pki/ca-trust/source/blacklist 
-/etc/pki/java 
-/etc/pki/java/cacerts 
-/etc/pki/tls 
-/etc/pki/tls/cert.pem 
-/etc/pki/tls/certs 
-/etc/pki/tls/certs/ca-bundle.crt 
-/etc/pki/tls/certs/ca-bundle.trust.crt 
-/etc/ssl 
-/etc/ssl/certs 
-/usr/bin/update-ca-trust 
-/usr/share/man/man8/update-ca-trust.8.gz 
-/usr/share/pki/ca-trust-source 
-/usr/share/pki/ca-trust-source/README 
-/usr/share/pki/ca-trust-source/anchors 
-/usr/share/pki/ca-trust-source/blacklist 
-/usr/share/pki/ca-trust-source/ca-bundle.neutral-trust.crt 
-/usr/share/pki/ca-trust-source/ca-bundle.supplement.p11-kit 
-/usr/share/pki/ca-trust-source/ca-bundle.trust.crt 
-</code> 
  
 ===== Dokumentation ===== ===== Dokumentation =====
Zeile 411: Zeile 324:
 -----END CERTIFICATE----- -----END CERTIFICATE-----
 </file> </file>
 +
 +Das gleiche machen wir nun mit dem Class3 Zertifikat von CAcert.
 +   # wget -O CAcert_class3.pem --no-check-certificate https://www.cacert.org/certs/class3.crt
 +
 +Nun haben wir auch das Class3 Root-Zertifikat von CAcert in unserem Verzeichnis.
 +   # less CAcert_class3.pem
 +<file CAcert_class3.pem>-----BEGIN CERTIFICATE-----
 +MIIHWTCCBUGgAwIBAgIDCkGKMA0GCSqGSIb3DQEBCwUAMHkxEDAOBgNVBAoTB1Jv
 +b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ
 +Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y
 +dEBjYWNlcnQub3JnMB4XDTExMDUyMzE3NDgwMloXDTIxMDUyMDE3NDgwMlowVDEU
 +MBIGA1UEChMLQ0FjZXJ0IEluYy4xHjAcBgNVBAsTFWh0dHA6Ly93d3cuQ0FjZXJ0
 +Lm9yZzEcMBoGA1UEAxMTQ0FjZXJ0IENsYXNzIDMgUm9vdDCCAiIwDQYJKoZIhvcN
 +AQEBBQADggIPADCCAgoCggIBAKtJNRFIfNImflOUz0Op3SjXQiqL84d4GVh8D57a
 +iX3h++tykA10oZZkq5+gJJlz2uJVdscXe/UErEa4w75/ZI0QbCTzYZzA8pD6Ueb1
 +aQFjww9W4kpCz+JEjCUoqMV5CX1GuYrz6fM0KQhF5Byfy5QEHIGoFLOYZcRD7E6C
 +jQnRvapbjZLQ7N6QxX8KwuPr5jFaXnQ+lzNZ6MMDPWAzv/fRb0fEze5ig1JuLgia
 +pNkVGJGmhZJHsK5I6223IeyFGmhyNav/8BBdwPSUp2rVO5J+TJAFfpPBLIukjmJ0
 +FXFuC3ED6q8VOJrU0gVyb4z5K+taciX5OUbjchs+BMNkJyIQKopPWKcDrb60LhPt
 +XapI19V91Cp7XPpGBFDkzA5CW4zt2/LP/JaT4NsRNlRiNDiPDGCbO5dWOK3z0luL
 +oFvqTpa4fNfVoIZwQNORKbeiPK31jLvPGpKK5DR7wNhsX+kKwsOnIJpa3yxdUly6
 +R9Wb7yQocDggL9V/KcCyQQNokszgnMyXS0XvOhAKq3A6mJVwrTWx6oUrpByAITGp
 +rmB6gCZIALgBwJNjVSKRPFbnr9s6JfOPMVTqJouBWfmh0VMRxXudA/Z0EeBtsSw/
 +LIaRmXGapneLNGDRFLQsrJ2vjBDTn8Rq+G8T/HNZ92ZCdB6K4/jc0m+YnMtHmJVA
 +BfvpAgMBAAGjggINMIICCTAdBgNVHQ4EFgQUdahxYEyIE/B42Yl3tW3Fid+8sXow
 +gaMGA1UdIwSBmzCBmIAUFrUyG9TH8+DmjvO90rA67rI5GNGhfaR7MHkxEDAOBgNV
 +BAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAG
 +A1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS
 +c3VwcG9ydEBjYWNlcnQub3JnggEAMA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUH
 +AQEEUTBPMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggr
 +BgEFBQcwAoYcaHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBB
 +MD8GCCsGAQQBgZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9y
 +Zy9pbmRleC5waHA/aWQ9MTAwNAYJYIZIAYb4QgEIBCcWJWh0dHA6Ly93d3cuQ0Fj
 +ZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAwUAYJYIZIAYb4QgENBEMWQVRvIGdldCB5
 +b3VyIG93biBjZXJ0aWZpY2F0ZSBmb3IgRlJFRSwgZ28gdG8gaHR0cDovL3d3dy5D
 +QWNlcnQub3JnMA0GCSqGSIb3DQEBCwUAA4ICAQApKIWuRKm5r6R5E/CooyuXYPNc
 +7uMvwfbiZqARrjY3OnYVBFPqQvX56sAV2KaC2eRhrnILKVyQQ+hBsuF32wITRHhH
 +Va9Y/MyY9kW50SD42CEH/m2qc9SzxgfpCYXMO/K2viwcJdVxjDm1Luq+GIG6sJO4
 +D+Pm1yaMMVpyA4RS5qb1MyJFCsgLDYq4Nm+QCaGrvdfVTi5xotSu+qdUK+s1jVq3
 +VIgv7nSf7UgWyg1I0JTTrKSi9iTfkuO960NAkW4cGI5WtIIS86mTn9S8nK2cde5a
 +lxuV53QtHA+wLJef+6kzOXrnAzqSjiL2jA3k2X4Ndhj3AfnvlpaiVXPAPHG0HRpW
 +Q7fDCo1y/OIQCQtBzoyUoPkD/XFzS4pXM+WOdH4VAQDmzEoc53+VGS3FpQyLu7Xt
 +hbNc09+4ufLKxw0BFKxwWMWMjTPUnWajGlCVI/xI4AZDEtnNp4Y5LzZyo4AQ5OHz
 +0ctbGsDkgJp8E3MGT9ujayQKurMcvEp4u+XjdTilSKeiHq921F73OIZWWonO1sOn
 +ebJSoMbxhbQljPI/lrMQ2Y1sVzufb4Y6GIIiNsiwkTjbKqGTqoQ/9SdlrnPVyNXT
 +d+pLncdBu8fA46A/5H2kjXPmEkvfoXNzczqA6NXLji/L6hOn1kGLrPo8idck9U60
 +4GGSt/M3mMS+lqO3ig==
 +-----END CERTIFICATE-----
 +</file> 
  
 <WRAP center round important 90%> <WRAP center round important 90%>
Zeile 418: Zeile 380:
    # openssl x509 -noout -fingerprint -in CAcert_class1.pem     # openssl x509 -noout -fingerprint -in CAcert_class1.pem 
  
-   SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33+  SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33
  
 Diesen Fingerprint vergleichen wir nun mit den Angaben von [[http://cacert.org|CAcert]] auf deren [[https://www.cacert.org/index.php?id=3|Homepage]]. Dort finden wir folgende Daten: Diesen Fingerprint vergleichen wir nun mit den Angaben von [[http://cacert.org|CAcert]] auf deren [[https://www.cacert.org/index.php?id=3|Homepage]]. Dort finden wir folgende Daten:
-   SHA1 Fingerabdruck: 13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33+  SHA1 Fingerabdruck: 13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33
  
 <WRAP center round alert 100%> <WRAP center round alert 100%>
Zeile 428: Zeile 390:
 </WRAP> </WRAP>
  
-Da **__beide Fingerprints__** gleich sind, können wir mit dem eigentlichem Importvorgang fortfahren! +Da **__beide Fingerprints__** gleich sind, können wir nun noch mit dem zweite CAcert Class3 Zertifikat genau so verfahren dabei wie beim ersten Zertifikat. 
 +   # openssl x509 -noout -fingerprint -in CAcert_class3.pem 
 + 
 +  SHA1 Fingerprint=AD:7C:3F:64:FC:44:39:FE:F4:E9:0B:E8:F4:7C:6C:FA:8A:AD:FD:CE 
 + 
 +Diesen Fingerprint vergleichen wir nun mit den Angaben von [[http://cacert.org|CAcert]] auf deren [[https://www.cacert.org/index.php?id=3|Homepage]]. Dort finden wir folgende Daten: 
 +  SHA1 Fingerabdruck: AD:7C:3F:64:FC:44:39:FE:F4:E9:0B:E8:F4:7C:6C:FA:8A:AD:FD:CE 
 + 
 +Ist Fingerprint Vergleich beim Class 3 Zertifikat auch gleich, können wir mit dem eigentlichem Importvorgang der beiden Zertifikate fortfahren! 
  
 </WRAP> </WRAP>
-Zum Importieren des CAcert-Root-Zertifikates benutzen wir nun den Befehl **update-ca-trust**.+Zum Importieren der CAcert-Root-Zertifikate benutzen wir nun den Befehl **update-ca-trust**.
    # update-ca-trust    # update-ca-trust
  
-Ist der Importvorgang abgeschlossen, findet sich am Ende der Datei //**/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem**// das gerade importierte Root-ZertifikatDies können wir auch mit folgendem Befehl überprüfen. +Ist der Importvorgang abgeschlossen, befinden sich in der in der Datei //**/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem**// die gerade importierten Root-Zertifikate
-   # openssl x509 -noout -issuer -in /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem+
  
-   issuer= /O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org+Wollen wir überprüfen, ob die gewünschten Zertifikate auch wirklich in dem erstellten Zertifikats-Bundle enthalten sind, greifen wir auf ein kleines Script zurück. Mit dem folgenden Perl-Script kann eine Liste aller Zertifikate erstellt werden, die sich in einer Zertifikats-Bundle-Datei befinden. 
 +   # vim /usr/local/bin/ca-list
  
 +<file perl /usr/local/bin/ca-list>#!/usr/bin/perl
 +# Liste eines Zertifikatsbundles ausgeben.
 +# Django <django@mailserver.guru> (c) 2015
 +#
 +$file = shift;
 +unless($file) { die("Ohne Zertifikatsbundle kann die Liste nicht erstellt werden!\n"); }
 +open LISTE, "<$file" or die("Fehler beim Laden der Datei \"$file\"\n");
 +
 +$certfile = "";
 +print "Folgende Zertifikate befinden sich in der Datei $file:\n";
 +
 +while(<LISTE>) {
 +        $certfile .= $_;
 +        if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) {
 +                print `echo "$certfile" | openssl x509 -noout -subject`;
 +                $certfile = "";
 +        }
 +}
 +close LISTE;
 +</file>
  
 +Das gerade angelegt Script statten wir noch mit den **x**-Ausführungsrecht aus.
 +   # chmod +x /usr/local/bin/ca-list
  
 +Nun können wir auch überprüfen, ob sich die zuvor installierten Root-Zertifikate von [[http://cacert.org|CAcert]] in der Zertifikats-Bundle-Datei //**/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem**// befinden.
 +   # ca-list /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem | grep -i cacert.org
  
 +  subject= /O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org
 +  subject= /O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root
  
 +~~AUTOTWEET:~~