Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
server_und_serverdienste:eigene_ca_bauen_und_zertifikate_ausrollen [2019/03/06 22:17] – [Vorbereiten des Servers] boospy | server_und_serverdienste:eigene_ca_bauen_und_zertifikate_ausrollen [2021/06/03 14:54] (aktuell) – [CA global in Ubuntu einspielen] loma | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Eigene CA bauen und Zertifikate ausrollen ====== | ====== Eigene CA bauen und Zertifikate ausrollen ====== | ||
- | FIXME | + | |
+ | Hauseigenes Apt-Repo: [[https:// | ||
+ | \\ | ||
+ | \\ | ||
Grundegedanke war hier die ganze Hürde mit gekauften Zertifikaten zu umgehen, und das ganze noch einfacher zu gestalten. Für Organisationen intern, aber auch extern. Mit Installation von deinem DEB Paket in Ubuntu, und in Windows mit einem MSI. Wir erstellen eine eigene CA mit einem Wildcardzertifikat. Somit benötigen wir pro Domäne nur ein Zertifikat und können dies auf allen Geräten und Rechnern installieren. Daraus kann man natürlich auch Anmeldezertifikate (p12) erstellen, um die Sicherheit in relevanten Seiten hinauf zu schrauben. | Grundegedanke war hier die ganze Hürde mit gekauften Zertifikaten zu umgehen, und das ganze noch einfacher zu gestalten. Für Organisationen intern, aber auch extern. Mit Installation von deinem DEB Paket in Ubuntu, und in Windows mit einem MSI. Wir erstellen eine eigene CA mit einem Wildcardzertifikat. Somit benötigen wir pro Domäne nur ein Zertifikat und können dies auf allen Geräten und Rechnern installieren. Daraus kann man natürlich auch Anmeldezertifikate (p12) erstellen, um die Sicherheit in relevanten Seiten hinauf zu schrauben. | ||
===== Erstellen der eigenen CA ===== | ===== Erstellen der eigenen CA ===== | ||
- | Der Vorgang wird von dieser Seite hier beschrieben: | ||
- | |||
**Für' | **Für' | ||
Zeile 80: | Zeile 81: | ||
</ | </ | ||
- | Alle anderen Anpassungen im File sind zwecks Automatisierung empfohlen. | + | Alle anderen Anpassungen im File sind zwecks Automatisierung empfohlen. |
+ | ==== Erstellen der CA und bauen des Zertifikates ==== | ||
+ | Man erstellt sich ein Verzeichnis wo man seine CA(s) baut, und erstellt diese. Den Wizard dabei einfach folgen. | ||
+ | < | ||
+ | mkdir Zertifizierungsstelle | ||
+ | cd Zertifizierungsstelle | ||
+ | / | ||
+ | </ | ||
+ | Im aktuellen Verzeichnis sollte jetzt ein neues Verzeichnis **demoCA** mit einigen Dateien und weiteren Unterverzeichnissen entstanden sein. Folgende davon sind wichtig: | ||
+ | |||
+ | * **cacert.pem** - Das öffentliche Zertifikat der CA. Diese Datei sollte auf allen Clients importiert werden. Danach vertrauen diese Clients automatisch allen von der CA ausgestellten Zertifikaten. | ||
+ | * **certs/** - Das Verzeichnis in dem die signierten Zertifikate untergebracht werden. | ||
+ | * **private/ | ||
+ | * **private/ | ||
+ | * **index.txt** - Sogenannte Datenbank der CA mit einer Liste aller ausgestellten Zertifikate und deren Status. | ||
+ | |||
+ | === Zertifikate signieren === | ||
+ | |||
+ | Mit dieser CA fängt man nun an die eigentlichen Zertifikate zu signieren, die man dann bspw. auf seinen Servern einsetzt. Auch hierfür verwendet man das CA.pl-Skript. Das Signieren läuft in zwei Stufen ab. Als erstes erstellt man einen neuen privaten Schlüssel und einen " | ||
+ | |||
+ | Bei " | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | Beim Signieren des Zertifikatsantrags wird nicht nur die Gültigkeitsdauer (s. Erstellen der neuen CA) sondern auch der Verwendungszweck festgelegt. Per Default werden Zertifikate ohne besonderen Verwendungszweck ausgestellt. Für Webserver empfiehlt es sich allerdings den Zertifikatstyp und Verwendungszweck als zusätzliche X.509 v3-Erweiterungen hinzuzufügen. Dazu muss wieder die OpenSSL-Konfiguration ''/ | ||
+ | < | ||
+ | ... | ||
+ | [ usr_cert ] | ||
+ | ... | ||
+ | basicConstraints=critical, | ||
+ | ... | ||
+ | nsCertType = server | ||
+ | ... | ||
+ | keyUsage = critical, | ||
+ | extendedKeyUsage = serverAuth | ||
+ | ... | ||
+ | </ | ||
+ | Jetzt wird der Zertifikatsantrag signiert und das neue Zertifkat mit den oben konfigurierten Attributen (X.509 v3-Erweiterungen) ausgestellt. | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | Hat man die " | ||
+ | < | ||
+ | failed to update database | ||
+ | TXT_DB error number 2 | ||
+ | </ | ||
+ | Das Problem lies sich umgehen in dem ich die Datei '' | ||
+ | < | ||
+ | -- unique_subject = yes | ||
+ | ++ unique_subject = no | ||
+ | </ | ||
+ | Die Passphrase im Signierschritt ist natürlich die des privaten CA-Schlüssels, | ||
+ | |||
+ | Im aktuellen Verzeichnis - immer noch das von **demoCA** übergeordnete - befinden sich jetzt die Dateien: | ||
+ | * **newreq.pem** - Zertifikatsantrag | ||
+ | * **newcert.pem** - Signiertes öffentliches Zertifikat | ||
+ | * **newkey.pem** - Privater Schlüssel | ||
+ | |||
+ | **newreq.pem** ist inzwischen nutzlos geworden und kann gelöscht werden. Wichtig sind nur die beiden Dateien **newcert.pem** und **newkey.pem**. Diesen sollte man aussagekräftigere Namen geben und sie zur Archivierung in das jeweilige **demoCA**-Unterverzeichnis verschieben. Wer das Schlüsselpaar auf einem Server benutzen möchte und nicht bei jedem Server-Start die Passphrase des privaten Schlüssels eingeben will, kann dieses noch vorher aus dem privaten Schlüssel löschen. In diesem Fall sollte man aber auf jeden Fall darauf achten, dass der private Schlüssel ohne Passphrase durch restriktive Dateirechte[4] auf dem Server vor neugierigen Blicken geschützt wird: | ||
+ | < | ||
+ | penssl rsa -in newkey.pem -out newkey-without-password.pem | ||
+ | mv newkey-without-password.pem demoCA/ | ||
+ | mv newcert.pem demoCA/ | ||
+ | </ | ||
+ | Diese zwei Dateien sind es auch, die der betreffende Server zum SSL-Betrieb benötigt. Die Datei **newkey.pem** kann jetzt ebenfalls gelöscht werden (nachdem man sich davon überzeugt hat, dass mit der Umwandlung alles geklappt hat, und **newkey-without-password.pem** nicht etwa leer ist). | ||
+ | |||
+ | Wo diese Dateien auf dem Server letztendlich hinkopiert werden müssen, hängt vom benutzten Server ab. Üblich sind aber die Verzeichnisse **/ | ||
===== CA global in Ubuntu einspielen ===== | ===== CA global in Ubuntu einspielen ===== | ||
Das CA ganz einfach unter ''/ | Das CA ganz einfach unter ''/ | ||
Zeile 86: | Zeile 154: | ||
update-ca-certificates | update-ca-certificates | ||
</ | </ | ||
+ | Man hat auch noch die Möglichkeit die Option '' | ||
Alternativ interaktiv: '' | Alternativ interaktiv: '' | ||
+ | |||
===== Automatische Installation in Firefox (Linux und Windows) ===== | ===== Automatische Installation in Firefox (Linux und Windows) ===== |