Opennet CA/CA Cert Renewal 2023: Unterschied zwischen den Versionen
Aus Opennet
Leo (Diskussion | Beiträge) (→TODO Liste 2022/2023) |
Leo (Diskussion | Beiträge) |
||
(2 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 40: | Zeile 40: | ||
− | * | + | * Opennet Gateway Server aktualisieren ( a) Zertifikat des Server erneuern + aktualisierte certchain einspielen per ansible (hier sollten alle VPN Verbindungen weiter funktionieren weil private Key der CAs unverändert ist) ) |
− | ** (✔️) gai | + | ** (✔️) gai, megumi, erina |
− | ** (⚠️) | + | ** (⚠️) subaru |
* (?) service discovery hat damals https genutzt (mit unserer ca) aber wollten wir auf http (unencrypted) umstellen | * (?) service discovery hat damals https genutzt (mit unserer ca) aber wollten wir auf http (unencrypted) umstellen | ||
* (✔️) jetzt können wir neue Server Zertifikate ausstellen und in Betrieb nehmen | * (✔️) jetzt können wir neue Server Zertifikate ausstellen und in Betrieb nehmen | ||
Zeile 54: | Zeile 54: | ||
* Opennet Server + Client Zertifikate erneuern/austauschen | * Opennet Server + Client Zertifikate erneuern/austauschen | ||
* einige Opennet User-AP/UGW-AP Zertifikate erneuern/austauschen | * einige Opennet User-AP/UGW-AP Zertifikate erneuern/austauschen | ||
− | * Beginn großflächig Nutzer-APs umstellen | + | * Beginn großflächig Nutzer-APs umstellen. [https://wiki.opennet-initiative.de/wiki/Router-Einrichtung/Update-on-certificates Anleitung] erstellt. |
− | * wir werden | + | * wir haben beschlossen, nicht alle VPN Zertifikate neu zu generieren. Wir werden es aufteilen: |
+ | ** bei allen VPN APs muss ein aktualisiertes on-certificates Paket installiert werden | ||
+ | ** ein neues Zertifikat wird nur ausgestellt, wenn es "passt" und schnell geht. Wir müssen aber in Zukunft einen Prozess erstellen, welcher User warnt bevor ihr VPN Zertifikat abläuft. '''TODO''' | ||
* (erledigt) testen, ob bei alten+neuen Firmware der "Generate" Button für neue Schlüsselerzeugung funktioniert, trotz vorhandenem Key | * (erledigt) testen, ob bei alten+neuen Firmware der "Generate" Button für neue Schlüsselerzeugung funktioniert, trotz vorhandenem Key | ||
* Idee: Felder vorausfüllen (Emailadresse & co) | * Idee: Felder vorausfüllen (Emailadresse & co) | ||
Zeile 125: | Zeile 127: | ||
IRZ3CMQ== 2.1.ugw.on - 2025 - old | IRZ3CMQ== 2.1.ugw.on - 2025 - old | ||
JWGzI1rI= 2.50.ugw.on - 2033 - new | JWGzI1rI= 2.50.ugw.on - 2033 - new | ||
+ | |||
+ | === Replace Cert of UGW Server === | ||
+ | |||
+ | * create new cert | ||
+ | ** siehe https://wiki.opennet-initiative.de/wiki/Server_Installation/OpenVPN | ||
+ | ** siehe ~/dev/opennet/cert_auth/new... | ||
+ | openssl req -days 3650 -nodes -new -newkey rsa:2048 -keyout erina2023.key -out erina2023.csr -config openssl-oni-server.cnf | ||
+ | ** upload neues Zertifikat | ||
+ | ** revoke altes Zertifikat | ||
+ | ** sign neues Zertifikat | ||
+ | *** ggf. in opennetca.sh zwei Zeilen kommentiert + index.txt.attr geändert | ||
+ | ** crt runterladen auf lokalen rechner | ||
+ | |||
+ | * how many clients are connected? | ||
+ | * configure new cert + chain | ||
+ | ** copy new crt + key to Gateway Server | ||
+ | scp erina2023.key erina:/etc/ssl/private/opennet-initiative.de/erina.opennet-initiative.de.key-2023 | ||
+ | scp server_erina.opennet-initiative.de_db68e1ff.crt erina:/etc/ssl/private/opennet-initiative.de/erina.opennet-initiative.de.crt-2023 | ||
+ | ** rename files to final name | ||
+ | mv erina.opennet-initiative.de.crt erina.opennet-initiative.de.crt-2013-old | ||
+ | mv erina.opennet-initiative.de.key erina.opennet-initiative.de.key-2013-old | ||
+ | ** run ansible | ||
+ | ansible-playbook -i hosts playbook-servers.yml --limit erina.on-i.de | ||
+ | * how many clients are connected? |
Aktuelle Version vom 26. November 2023, 09:38 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Situation
- Sub-CAs laufen Ende 2023/Anfang 2024 ab, siehe Opennet CA und Benutzer:MathiasMahnke/CA Cert Renewal 2013
- wir müssen diese erneuern + alle daraus abgeleiteten Zertifikate
- Entscheidung über CA Parameter - erledigt durch Mathias (mittels xca)
- Sub-CA Resign
- Prüfen, ob abgelaufene OpenVPN Zertifikate überhaupt die Funktion beeinträchtigen
- ja, laut vertrauenswürdigen Internetquellen ist die Zertifikatsablaufprüfung ein integraler nicht umgehbarer Bestandteil von OpenVPN (https://superuser.com/questions/1521168/how-to-allow-some-expired-client-certificates-in-openvpn)
[Bearbeiten] TODO Liste 2022/2023
Aktueller Prozess - Resign mit vorhandenen Keys:
- (✔️) CA Zertifikate verlängern
- (✔️) Entscheidung: Seriennummern für Root CA übernehmen. Dadurch kann man auf den VPN Servern ein neues Zertifikat einspielen, welches von alten Clients weiterhin vertraut wird.
- (✔️) Root CA 15 Jahre verlängert (Ende 2038)
- (✔️) alle CAs wurden verlängert (resign) von aktualisierter root CA (private keys sind unverändert)
- (✔️) Wiki Seite mit CA Übersicht aktualisieren
- (✔️) ca Git aktualisieren
- einzelne Zertifikate abspeichern, siehe https://github.com/opennet-initiative/ca/tree/main/cert
- on-bundle erstellen und committen, siehe https://github.com/opennet-initiative/ca/tree/main/web/public)
- (✔️) ansible Git aktualisieren
- update Jahr, siehe https://github.com/opennet-initiative/ansible/commit/4b5e26b64bef21c7e6d9af1b14f9c408e814cc3c
- update Jahr in Dateinamen, siehe https://github.com/opennet-initiative/ansible/commit/cad74787c18cb39bfc936f50751ec39e18d77c26
- (✔️) Testen (bevor auf amano (prod CA Server) eingespielt wird via ansible)
- VM auf deinem Gerät mit Debian erstellen. Config siehe https://wiki.debian.org/ThomasChung/CloudImage
- root login erlauben für VM, siehe https://linuxconfig.org/enable-ssh-root-login-on-debian-linux-server
- ansible Lauf gegen neue VM machen und Rolle 'opennetca' dort anwenden. Jetzt sollte alle neuen CAs hier installiert sein.
- vom produktiven CA Server (amano) einige CSR Dateien (jeweils 1x server, 1x vpn-user, 1x vpn-ugw) zum Testen kopieren
- diese CSRs nun signieren, bspw. 'root@localhost:/home/opennetca/ca/vpn-ugw# ./opennetca.sh sign vpn-ugw_2.1.ugw.on_e653cf77'. Natürlich benötigen wir die .key Datei für die Sub-CA hierfür noch.
- testen, ob Zertifikatskette funktioniert. Beispiel: `root@localhost:/home/opennetca/ca/vpn-ugw# openssl verify -CAfile ../root/opennet-root.ca.on_2022.crt -untrusted opennet-vpn-ugw.ca.on_2022.crt cert/vpn-ugw_2.1.ugw.on_e653cf77.crt`
- (✔️) Opennet Firmware on-certificates und OpenVPN Pakete aktualisieren
- (✔️) auf Opennet CA Server (amano)
- (✔️) CA crt Dateien einspielen
- (✔️) ca-bundle ablegen (neues bundle siehe https://github.com/opennet-initiative/ca/blob/main/web/public/opennet-ca-bundle.tar.gz)
- () index.txt Rebuild: https://forums.openvpn.net/viewtopic.php?t=9999
- (✔️) config (openssl) Datei anpassen
- (✔️) ca/${ONI_CA_X}/opennetca.cfg anpassen
- (✔️) wenn jetzt neues client crt neu erstellt wird, sollte dieses selbst mit der alten CA funktionieren, weil die private keys der CAs sich nicht geändert haben
- Opennet Gateway Server aktualisieren ( a) Zertifikat des Server erneuern + aktualisierte certchain einspielen per ansible (hier sollten alle VPN Verbindungen weiter funktionieren weil private Key der CAs unverändert ist) )
- (✔️) gai, megumi, erina
- (⚠️) subaru
- (?) service discovery hat damals https genutzt (mit unserer ca) aber wollten wir auf http (unencrypted) umstellen
- (✔️) jetzt können wir neue Server Zertifikate ausstellen und in Betrieb nehmen
- Firmware Aktualisieren oder alte Firmware mit neuem on-certificates Paket versorgen
- Alte Firmware mit neuem Cert versehen: Anleitung
- neues Zertifikat erstellen per Webinterface
- CSR signieren
- .crt Datei hochladen
- (Geht das per Webinterface??) aktuelles on-certificates Paket einspielen - z.B. https://downloads.opennet-initiative.de/openwrt/testing/0.5.8-unstable-3012-03ba48c2/packages/i386_pentium4/opennet/on-certificates_0.5.8-unstable-3012-03ba48c2_i386_pentium4.ipk
- Alte Firmware mit neuem Cert versehen: Anleitung
- Opennet Server + Client Zertifikate erneuern/austauschen
- einige Opennet User-AP/UGW-AP Zertifikate erneuern/austauschen
- Beginn großflächig Nutzer-APs umstellen. Anleitung erstellt.
- wir haben beschlossen, nicht alle VPN Zertifikate neu zu generieren. Wir werden es aufteilen:
- bei allen VPN APs muss ein aktualisiertes on-certificates Paket installiert werden
- ein neues Zertifikat wird nur ausgestellt, wenn es "passt" und schnell geht. Wir müssen aber in Zukunft einen Prozess erstellen, welcher User warnt bevor ihr VPN Zertifikat abläuft. TODO
- (erledigt) testen, ob bei alten+neuen Firmware der "Generate" Button für neue Schlüsselerzeugung funktioniert, trotz vorhandenem Key
- Idee: Felder vorausfüllen (Emailadresse & co)
[Bearbeiten] Prozedur zum Testen neuer Zertifikate
Voraussetzung:
- SSH Zugriff auf Server gai
- Zugriff auf ein UGW (mit neuem und altem Zertifikat)
Ablauf:
- ssh into Server gai
cd /etc/openvpn/opennet_ugw_2022_test vim ../opennet_ugw_2022_test.conf /usr/sbin/openvpn --config ../opennet_ugw_2022_test.conf # this starts OpenVPN in foreground on port 16999
- ssh into your UGW
# create config file cat > mesh_openvpn_gai_opennet_initiative_de_16999_udp.conf <<EOF #!/bin/sh remote gai.opennet-initiative.de 16999 udp ca /etc/ssl/certs/opennet-initiative.de/opennet-server_bundle.pem # try new ca bundles here remote-cert-tls server cd /etc/openvpn/opennet_ugw cert on_ugws.crt # try new ugw cert here key on_ugws.key client nobind explicit-exit-notify 1 persist-tun persist-key mute-replay-warnings dev tap dev-type tap txqueuelen 1000 EOF # start openvpn tunnel via openvpn --config mesh_openvpn_gai_opennet_initiative_de_1602_udp.conf
[Bearbeiten] Testfälle
#Test UGW-Server UGW-Client Szenario certchain cert certchain cert ------------------------------------------------------------------------------------------- 1 alt alt alt alt alles alt, wie bisher 2 neu neu alt alt nur Server aktualisiert und Clients noch nicht 3 neu neu neu neu auch UGW aktualisiert
Ergebnis
zu 1) geht zu 2) geht zu 3) geht
Liste Cert (zum identifieren in Datei)
Last Chars CN Expire date Comment ------------------------------------------------------- 7wzA93Y= opennet-vpn-ugw.ca.on - 2023 - old VgUYebE= opennet-vpn-ugw.ca.on - 2032 - new ziWuGw== opennet-server.ca.on - 2024 - old CTPgmM6y opennet-server.ca.on - 2032 - new TALI5FU= opennet-root.ca.on - 2033 - old RSWnxw== opennet-root.ca.on - 2037 - cert is defect because of signing problems DCkOeU0= opennet-root.ca.on - 2038 - new fixed cert IRZ3CMQ== 2.1.ugw.on - 2025 - old JWGzI1rI= 2.50.ugw.on - 2033 - new
[Bearbeiten] Replace Cert of UGW Server
- create new cert
- siehe https://wiki.opennet-initiative.de/wiki/Server_Installation/OpenVPN
- siehe ~/dev/opennet/cert_auth/new...
openssl req -days 3650 -nodes -new -newkey rsa:2048 -keyout erina2023.key -out erina2023.csr -config openssl-oni-server.cnf
- upload neues Zertifikat
- revoke altes Zertifikat
- sign neues Zertifikat
- ggf. in opennetca.sh zwei Zeilen kommentiert + index.txt.attr geändert
- crt runterladen auf lokalen rechner
- how many clients are connected?
- configure new cert + chain
- copy new crt + key to Gateway Server
scp erina2023.key erina:/etc/ssl/private/opennet-initiative.de/erina.opennet-initiative.de.key-2023 scp server_erina.opennet-initiative.de_db68e1ff.crt erina:/etc/ssl/private/opennet-initiative.de/erina.opennet-initiative.de.crt-2023
- rename files to final name
mv erina.opennet-initiative.de.crt erina.opennet-initiative.de.crt-2013-old mv erina.opennet-initiative.de.key erina.opennet-initiative.de.key-2013-old
- run ansible
ansible-playbook -i hosts playbook-servers.yml --limit erina.on-i.de
- how many clients are connected?