Opennet CA/CA Cert Renewal 2023: Unterschied zwischen den Versionen
Erscheinungsbild
Inhalt gelöscht Inhalt hinzugefügt
Leo (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Leo (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| (19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 11: | Zeile 11: | ||
Aktueller Prozess - Resign mit vorhandenen Keys: |
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 |
|||
** (erledigt) Opennet Firmware on-certificates und OpenVPN Pakete aktualisieren |
|||
*** 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 |
||
* auf Opennet Servern die ca certchain ersetzen mit ansible (hier sollten alle VPN Verbindungen weiter funktionieren weil private Key der CAs unverändert ist) |
|||
* 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) ) |
|||
* ? service discovery hat damals https genutzt (mit unserer ca) aber wollten wir auf http (unencrypted) umstellen |
|||
** (✔️) gai, megumi, erina |
|||
* jetzt können wir neue Server Zertifikate ausstellen und in Betrieb nehmen |
|||
** (⚠️) 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 |
* 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 |
|||
* 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 |
* 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 |
|||
* (erledigt) testen, ob bei alten+neuen Firmware der "Generate" Button für neue Schlüsselerzeugung funktioniert, trotz vorhandem Key |
|||
** 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) |
* Idee: Felder vorausfüllen (Emailadresse & co) |
||
=== Prozedur zum Testen neuer Zertifikate === |
|||
Testfälle |
|||
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 |
|||
==== 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 |
|||
=== 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? |
|||
* Server alt, Firmware alt, crt neu generiert |
|||
* configure new cert + chain |
|||
** funktioniert (wurde mit 0.5.7-unstable-2987 und ersten neuen UGW cert von AP2.50 getestet) |
|||
** copy new crt + key to Gateway Server |
|||
* Server alt, Firmware neu (neue certchain, altes cert) |
|||
scp erina2023.key erina:/etc/ssl/private/opennet-initiative.de/erina.opennet-initiative.de.key-2023 |
|||
* Server neu, Firmware alt - hier sollte cert ablaufen (ggf. uhrzeit umschalten und testen) |
|||
scp server_erina.opennet-initiative.de_db68e1ff.crt erina:/etc/ssl/private/opennet-initiative.de/erina.opennet-initiative.de.crt-2023 |
|||
* Server neu, Firmware neu |
|||
** rename files to final name |
|||
* Server neu, Firmware neu, crt neu generiert |
|||
mv erina.opennet-initiative.de.crt erina.opennet-initiative.de.crt-2013-old |
|||
* Server neu, Firmware alt, crt neu generiert - hier könnte es schief gehen?!? dann benötige wir ggf. on-certificates neu |
|||
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, 07:38 Uhr
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)
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)
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
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
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?