Opennet CA/CA Cert Renewal 2023: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
 
(33 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 7: Zeile 7:
 
** 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)
 
** 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 ===
  
=== TODO Liste (neu) ===
+
Aktueller Prozess - Resign mit vorhandenen Keys:
  
angenommen: neu CAs sind generiert (komplett neue CAs -- auch private Key neu generiert <- Annahme stimmt nicht weil private Key gleich bleibt, siehe unten)
+
* (✔️) CA Zertifikate verlängern
* erstelle neues server-ca-bundle (einfach neue CA Zertifikate hinzufügen)
+
** (✔️) 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.
* Server: server-ca-bundle auf OpenVPN Server einspielen. OpenVPN muss neuen CAs vertrauen.
+
** (✔️) Root CA 15 Jahre verlängert (Ende 2038)
* AP: für alle APs neues Zertifikat erstellen (mit neuer CA)
+
** (✔️) alle CAs wurden verlängert (resign) von aktualisierter root CA (private keys sind unverändert)
* AP: Zertifikat auf AP konfigurieren/aktivieren
+
** (✔️) Wiki Seite mit CA Übersicht aktualisieren
* AP: neues certificate-bundle einspielen/kopieren (on-certificates)
+
** (✔️) ca Git aktualisieren
* als letztes neues Zertifikat auf VPN Server einspielen (nachdem alle APs umgestellt sind)
+
*** 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
  
Aktueller Prozess (entstanden im Gespräch mit Mathias):
+
* (✔️) 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
  
* CA Zertifikate generieren
 
** Entscheidung: Seriennummern nicht übernehmen
 
** root CA 5 Jahre verlängert (Ende 2037)
 
** alle CAs wurden verlängert (resign) von aktualisierter root CA (private keys sind unverändert)
 
** wiki Seite mit CA Übersicht aktualisieren
 
  
* auf Opennet CA Server (amano)
+
* 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) )
** CA crt Dateien exportieren
+
** (✔️) gai, megumi, erina
** ca-bundle erstellen (neues bundle siehe https://github.com/opennet-initiative/ca/commit/a64d867a2d0bc9ff07c7572e9ab61fd3b2d6dd43)
+
** (⚠️) subaru
** index.txt Rebuild: https://forums.openvpn.net/viewtopic.php?t=9999
+
* (?) service discovery hat damals https genutzt (mit unserer ca) aber wollten wir auf http (unencrypted) umstellen
** config (openssl) Datei anpassen
+
* (✔️) jetzt können wir neue Server Zertifikate ausstellen und in Betrieb nehmen
** ca/${ONI_CA_X}/opennetca.cfg anpassen
+
* Firmware Aktualisieren oder alte Firmware mit neuem on-certificates Paket versorgen
** 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
+
** 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
  
* 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 Server + Client Zertifikate erneuern/austauschen
* ? service discovery hat damals https genutzt (mit unserer ca) aber wollten wir auf http (unencrypted) umstellen
+
* einige Opennet User-AP/UGW-AP Zertifikate erneuern/austauschen
* jetzt können wir neue Server Zertifikate ausstellen und in Betrieb nehmen
+
* Beginn großflächig Nutzer-APs umstellen. [https://wiki.opennet-initiative.de/wiki/Router-Einrichtung/Update-on-certificates Anleitung] erstellt.
* einige Opennet AP Zertifikate erneuern/austauschen
+
* wir haben beschlossen, nicht alle VPN Zertifikate neu zu generieren. Wir werden es aufteilen:
* Beginn großflächig Nutzer-APs umstellen
+
** bei allen VPN APs muss ein aktualisiertes on-certificates Paket installiert werden
* wir sollten den Standardprozess nutzen (neues Zertifikat auf dem AP generieren und dieses dann von neuer CA signieren)
+
** 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'''
* testen, ob bei alten+neuen Firmware der "Generate" Button für neue Schlüsselerzeugung funktioniert, trotz vorhandem 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)
 +
 +
=== 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?

Aktuelle Version vom 26. November 2023, 09:38 Uhr

Inhaltsverzeichnis

[Bearbeiten] Situation

[Bearbeiten] TODO Liste 2022/2023

Aktueller Prozess - Resign mit vorhandenen Keys:


  • 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
  • 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

   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?
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge