Benutzer:MathiasMahnke/CA Cert Renewal 2013: Unterschied zwischen den Versionen
Aus Opennet
(→TODO Liste) |
(→Zeitplan) |
||
(48 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
* Erneuerung der Root CA | * Erneuerung der Root CA | ||
* Durchsicht nicht mehr benötigter Sub CAs | * Durchsicht nicht mehr benötigter Sub CAs | ||
− | * | + | * Sign der benötigten Sub CAs |
* Aufbau einer CRL Infrastruktur | * Aufbau einer CRL Infrastruktur | ||
* Parallelbetrieb alte und neue CA Struktur | * Parallelbetrieb alte und neue CA Struktur | ||
Zeile 20: | Zeile 20: | ||
* bis Herbst 2013 - Entscheidung für neue CA Infrastruktur abstimmen und CA erzeugen | * bis Herbst 2013 - Entscheidung für neue CA Infrastruktur abstimmen und CA erzeugen | ||
* Winter 2013/2014 - Austausch CAs und User Zertifikate | * Winter 2013/2014 - Austausch CAs und User Zertifikate | ||
− | * Herbst 2014 - Deaktivierung alte CA | + | * Herbst 2014 - Deaktivierung alte CA Infrastruktur testweise |
− | * Frühjahr 2015 - Deaktivierung alte CA | + | * Frühjahr 2015 - Deaktivierung alte CA Infrastruktur final |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== Neue Root CA === | === Neue Root CA === | ||
Zeile 86: | Zeile 81: | ||
jq 'sort_by(.upload_timestamp) | .[] | select(.status=="CSR") | select (.cn_filter=="vpnugw") | | jq 'sort_by(.upload_timestamp) | .[] | select(.status=="CSR") | select (.cn_filter=="vpnugw") | | ||
{name,subject_mail,subject_cn,subject_o,cn_filter,upload_mail,upload_timestamp,upload_advisor,upload_ccmail,status}' | {name,subject_mail,subject_cn,subject_o,cn_filter,upload_mail,upload_timestamp,upload_advisor,upload_ccmail,status}' | ||
+ | |||
+ | === Mailversand === | ||
+ | |||
+ | Auf Basis ''mutt'' (Attachments via MIME/Multipart, Voraussetzung mutt): | ||
+ | echo -e "$message" | EMAIL="$from" mutt -s "$subject" -a "$file" -c "$cc" -- "$to" && echo "done." || echo "failed." | ||
+ | |||
+ | Auf Basis mailx (Attachments Inline via uuencode; Voraussetzung mailx u. sharutils): | ||
+ | ( uuencode "$file" "$filename"; echo -e "$message" ) | mailx -s "$subject" "$to" && echo "done." || echo "failed." | ||
=== Cert Login === | === Cert Login === | ||
Zeile 93: | Zeile 96: | ||
* http://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslrequire | * http://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslrequire | ||
* http://cweiske.de/tagebuch/ssl-client-certificates.htm | * http://cweiske.de/tagebuch/ssl-client-certificates.htm | ||
+ | |||
+ | === Debian CA Handling === | ||
+ | |||
+ | * /usr/share/doc/ca-certificates/README.Debian | ||
+ | * Download Cert Bundle + dpkg-reconfigure ca-certificates | ||
+ | * mkdir /etc/ssl/crl | ||
+ | * mkdir /usr/share/ca-certificates/opennet-initiative.de | ||
+ | * opennetca_crldownload.sh -> /usr/local/sbin | ||
=== TODO Liste === | === TODO Liste === | ||
Zeile 124: | Zeile 135: | ||
* (erledigt) Sign CC E-Mail via JSON | * (erledigt) Sign CC E-Mail via JSON | ||
* (erledigt) CSR Upload Sign Interface | * (erledigt) CSR Upload Sign Interface | ||
− | * CC-Mail Versand bei sign_batch implementieren | + | * (erledigt) CC-Mail Versand bei sign_batch implementieren |
− | * Revoke | + | * (erledigt) Revoke per Webinterface |
− | * | + | * (erledigt) Verbesserung Zeitaufwand/Ablauf Cronjobs |
− | + | * (erledigt) CSR Status mit Tag/Uhrzeit statt Timestamp | |
− | * CSR Status mit Tag/Uhrzeit statt Timestamp | + | * (erledigt) Sortierung CSR Liste per jq-reverse |
− | * Sortierung CSR Liste per jq-reverse | + | * (erledigt) Mailversand mit menschenlesbaren Absender/Empfänger |
− | * | + | * (erledigt) Mailversand mit Anhängen verbessern |
− | * | + | * (erledigt) Status / JSON Webinterface |
− | * | + | * (erledigt) CSR Upload Prüfung alte AP Schreibweise (XXX.aps.on statt y.xxx.aps / y.xxx.aps.on) |
− | * | + | * (erledigt) Zeichnung State Maschine |
− | * | + | * (erledigt) Doku Webserver Konfiguration |
− | * | + | * (erledigt) SSH Zugaenge prüfen / bereinigen |
− | * Opennet Mesh CA/CSR interne Erreichbarkeit | + | * (erledigt) Rsync Prozesse auf VPN Servern entfernen |
− | * neue Schlüsselpaare je VPN Instanz erzeugen, signieren u. einbetten | + | * (erledigt) Erinnerung an offene CSR Anfragen |
+ | * (erledigt) Opennet Mesh CA/CSR interne Erreichbarkeit | ||
+ | * (erledigt) Server Sub-CA erzeugen u. veröeffentlichen | ||
+ | * (erledigt) Heartofgold Server Zertifikat mit SubjectAltName | ||
+ | * (erledigt) CAPath Config in UGW/User VPN Instanzen | ||
+ | * (erledigt) CSR Upload Prüfung alte AP Schreibweise für UGWs | ||
+ | * (erledigt) Test neues Schlüsselpaar User VPN (Aqua) | ||
+ | * (erledigt) CA File mit Certchain zum Download anbieten | ||
+ | * (erledigt) Test CRL Revoke mit UGW/User VPN (Aqua) | ||
+ | * (erledigt) CA Bundle File zum Download anbieten | ||
+ | * (erledigt) Struktur Ablage Cert, Key, CRL, CA auf VPN Server anpassen | ||
+ | * (erledigt) OpenVPN Wiki Doku anpassen | ||
+ | * (erledigt) Upload via HTTPS möglich | ||
+ | * (erledigt) neue Struktur auf allen VPN Server übertragen | ||
+ | * (erledigt) neue Schlüsselpaare je VPN Instanz erzeugen, signieren u. einbetten | ||
+ | * (erledigt) CRL Download überarbeiten | ||
+ | * (erledigt) Deaktivieren altes tls-verify Script auf allen VPN Servern | ||
+ | * (erledigt) Config Push Erweiterung alle VPN Server | ||
+ | * (erledigt) Serienummerngenerator überarbeiten, z.T. falsche Zeichen enthalten | ||
+ | * (erledigt) CA Einbettung in Opennet Server | ||
+ | * (erledigt) CA Einbettung in APs | ||
+ | * (erledigt) Ankündigung an alle Opennet Mitglieder senden | ||
* nach Umstellung aller VPN Clients: | * nach Umstellung aller VPN Clients: | ||
** alte CAs aus OpenVPN Instanzen entfernen | ** alte CAs aus OpenVPN Instanzen entfernen | ||
− | + | ** alte Freigabeverzeichnisse u. User auf CA Server entfernen | |
− | ** alte Freigabeverzeichnisse auf CA Server entfernen | + | ** Aktivierung CADIR Check UGW/User VPN Instanzen |
− | ** | + | ** (erledigt) neue Schlüsselpaare aktivieren |
+ | * CRL Monitoring | ||
+ | * REST API zur Anbindung an die Opennet FW? | ||
+ | * GPG / X.509 signierter Mailversand? | ||
+ | * DNSSEC / TLSA? | ||
+ | * Umstellung OpenVPN ns-cert-type nach remote-cert-tls in Opennet Firmware + Anpassung Zertifikate auf EKU "TLS Server" |
Aktuelle Version vom 5. März 2022, 20:20 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Ziel
Im April 2015 läuft das Opennet CA Root-Zertifikat aus, es folgen einige Zertifikate aus der Anfangszeit, die dann ebenfalls nach und nach ablaufen.
- Erneuerung der Root CA
- Durchsicht nicht mehr benötigter Sub CAs
- Sign der benötigten Sub CAs
- Aufbau einer CRL Infrastruktur
- Parallelbetrieb alte und neue CA Struktur
- Austausch der CA Certs sowie der Client Zertifikate Schritt für Schritt
- Erzeugen einer Cert Webansicht
- ggf. Tool zur vereinfachten Erstellung u. Erneuerung der User/UGW Zertifikate per Web
- ggf. Anpassung OpenVPN Freigabe auf Basis von CRL oder nur zusätzlich mit CRL Check
[Bearbeiten] Zeitplan
(Als Idee / Gedankenstütze)
- bis Sommer 2013 - Übersicht über Zertifikate schaffen
- bis Herbst 2013 - Entscheidung für neue CA Infrastruktur abstimmen und CA erzeugen
- Winter 2013/2014 - Austausch CAs und User Zertifikate
- Herbst 2014 - Deaktivierung alte CA Infrastruktur testweise
- Frühjahr 2015 - Deaktivierung alte CA Infrastruktur final
[Bearbeiten] Neue Root CA
Umsetzung erfolgt, siehe Opennet CA.
[Bearbeiten] OpenVPN
- https://community.openvpn.net/openvpn/wiki/Using_Certificate_Chains
- http://openvpn.net/index.php/open-source/documentation/howto.html#revoke
- http://wiki.openvpn.eu/index.php/Zertifikate_sperren
- http://serverfault.com/questions/306345/certification-authority-root-certificate-expiry-and-renewal
for file in *; do openssl x509 -subject -serial -issuer -noout -in $file; done
crl-verify /opt/sslcnf/crl.pem
Umsetzung erfolgt, siehe Server Installation/OpenVPN.
[Bearbeiten] CRL / OCSP
- http://www.openca.org/projects/ocspd/
- http://svn.cacert.org/CAcert/SystemAdministration/ocsp/home/software/ocspd/etc/init.d/ocspd.debian
- http://www.nslu2-linux.org/wiki/HowTo/BuildOCSPD
- http://sourceforge.net/mailarchive/forum.php?set=custom&viewmonth=&viewday=&forum_name=openca-ocspd&style=nested&max_rows=75&submit=Change+View
Umsetzung CRL erfolgt, siehe Server Installation/Opennet CA.
CRL Fehler (gelöst durch CA-Dir):
Mon Jan 6 19:32:13 2014 ::ffff:192.168.11.27 Re-using SSL/TLS context Mon Jan 6 19:32:13 2014 ::ffff:192.168.11.27 LZO compression initialized Mon Jan 6 19:32:14 2014 ::ffff:192.168.11.27 CRL: CRL /etc/openvpn/crl/vpnuser.crl is from a different issuer than the issuer of certificate /C=DE/ST=Mecklenburg-Vorpommern/O=Opennet_Initiative_e.V./OU=Opennet_CA/ CN=opennet-root.ca.on/emailAddress=admin@opennet-initiative.de Mon Jan 6 19:32:14 2014 ::ffff:192.168.11.27 CRL: CRL /etc/openvpn/crl/vpnuser.crl is from a different issuer than the issuer of certificate /C=DE/ST=Mecklenburg-Vorpommern/O=Opennet_Initiative_e.V./OU=Opennet_CA/ CN=opennet-vpn-user.ca.on/emailAddress=admin@opennet-initiative.de
[Bearbeiten] CSR JSON
- http://stedolan.github.io/jq/
- Testanfrage per JQ:
# jq '. | {name, subject_mail}' csr_upload.json { "subject_mail": "name@something.org", "name": "vpnugw_1.123.ugw.on_7f1578e1.csr" } { "subject_mail": "apXX@on-i.de", "name": "vpnugw_1.245.ugw.on_c1d85d90.csr" } { "subject_mail": "another@mail.host.org", "name": "vpnuser_2.679.aps.on_59888696.csr" }
- Combine, Sort, Filter, Select JSONs:
{ echo -n "["; for f in *.json; do cat $f; echo -n ","; done; echo -n "]"; echo; } | sed 's/,]$/]/' | jq 'sort_by(.upload_timestamp) | .[] | select(.status=="CSR") | select (.cn_filter=="vpnugw") | {name,subject_mail,subject_cn,subject_o,cn_filter,upload_mail,upload_timestamp,upload_advisor,upload_ccmail,status}'
[Bearbeiten] Mailversand
Auf Basis mutt (Attachments via MIME/Multipart, Voraussetzung mutt):
echo -e "$message" | EMAIL="$from" mutt -s "$subject" -a "$file" -c "$cc" -- "$to" && echo "done." || echo "failed."
Auf Basis mailx (Attachments Inline via uuencode; Voraussetzung mailx u. sharutils):
( uuencode "$file" "$filename"; echo -e "$message" ) | mailx -s "$subject" "$to" && echo "done." || echo "failed."
[Bearbeiten] Cert Login
- http://wiki.cacert.org/ApacheServerClientCertificateAuthentication
- http://httpd.apache.org/docs/trunk/mod/mod_ssl.html#envvars
- http://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslrequire
- http://cweiske.de/tagebuch/ssl-client-certificates.htm
[Bearbeiten] Debian CA Handling
- /usr/share/doc/ca-certificates/README.Debian
- Download Cert Bundle + dpkg-reconfigure ca-certificates
- mkdir /etc/ssl/crl
- mkdir /usr/share/ca-certificates/opennet-initiative.de
- opennetca_crldownload.sh -> /usr/local/sbin
[Bearbeiten] TODO Liste
- (erledigt) DNS Eintrag erstellen
- (erledigt) Webserver konfigurieren
- (erledigt) Entscheidung über CA Parameter
- (erledigt) Root-CA anlegen
- (erledigt) Sub-CA anlegen
- (erledigt) CAs einlagern, Keys/CSR sichern
- (erledigt) Root CA index manuell erstellen
- (erledigt) Certs bereitstellen
- (erledigt) CRLs erstellen und automatisieren
- (erledigt) Webseite/-interface bereitstellen
- (erledigt) Subversion Repository angelegen
- (erledigt) Sign Script auf Random Serial Numbers umstellen
- (erledigt) Certs automatisch sammeln
- (erledigt) Automatische Webbasierte Certübersicht erstellen
- (erledigt) CSR CN Filter je CA
- (erledigt) Automatischer Mailversand
- (erledigt) CRL Download per Cron auf VPN GW Servern
- (erledigt) CRL Check in OpenVPN Instanzen
- (erledigt) Neue CAs zu OpenVPN CA-File hinzufügen
- (erledigt) CSR Upload Webinterface
- (erledigt) Sign Script Fehler bei OpenSSL Abbruch abfangen
- (erledigt) CSR Upload JSON Generator
- (erledigt) Client Sub-CA anlegen
- (erledigt) CSR Status Webinterface
- (erledigt) HTTPS Webinterface mit Client Cert Login
- (erledigt) CSR Upload Benachrichtigung
- (erledigt) Sign CC E-Mail via JSON
- (erledigt) CSR Upload Sign Interface
- (erledigt) CC-Mail Versand bei sign_batch implementieren
- (erledigt) Revoke per Webinterface
- (erledigt) Verbesserung Zeitaufwand/Ablauf Cronjobs
- (erledigt) CSR Status mit Tag/Uhrzeit statt Timestamp
- (erledigt) Sortierung CSR Liste per jq-reverse
- (erledigt) Mailversand mit menschenlesbaren Absender/Empfänger
- (erledigt) Mailversand mit Anhängen verbessern
- (erledigt) Status / JSON Webinterface
- (erledigt) CSR Upload Prüfung alte AP Schreibweise (XXX.aps.on statt y.xxx.aps / y.xxx.aps.on)
- (erledigt) Zeichnung State Maschine
- (erledigt) Doku Webserver Konfiguration
- (erledigt) SSH Zugaenge prüfen / bereinigen
- (erledigt) Rsync Prozesse auf VPN Servern entfernen
- (erledigt) Erinnerung an offene CSR Anfragen
- (erledigt) Opennet Mesh CA/CSR interne Erreichbarkeit
- (erledigt) Server Sub-CA erzeugen u. veröeffentlichen
- (erledigt) Heartofgold Server Zertifikat mit SubjectAltName
- (erledigt) CAPath Config in UGW/User VPN Instanzen
- (erledigt) CSR Upload Prüfung alte AP Schreibweise für UGWs
- (erledigt) Test neues Schlüsselpaar User VPN (Aqua)
- (erledigt) CA File mit Certchain zum Download anbieten
- (erledigt) Test CRL Revoke mit UGW/User VPN (Aqua)
- (erledigt) CA Bundle File zum Download anbieten
- (erledigt) Struktur Ablage Cert, Key, CRL, CA auf VPN Server anpassen
- (erledigt) OpenVPN Wiki Doku anpassen
- (erledigt) Upload via HTTPS möglich
- (erledigt) neue Struktur auf allen VPN Server übertragen
- (erledigt) neue Schlüsselpaare je VPN Instanz erzeugen, signieren u. einbetten
- (erledigt) CRL Download überarbeiten
- (erledigt) Deaktivieren altes tls-verify Script auf allen VPN Servern
- (erledigt) Config Push Erweiterung alle VPN Server
- (erledigt) Serienummerngenerator überarbeiten, z.T. falsche Zeichen enthalten
- (erledigt) CA Einbettung in Opennet Server
- (erledigt) CA Einbettung in APs
- (erledigt) Ankündigung an alle Opennet Mitglieder senden
- nach Umstellung aller VPN Clients:
- alte CAs aus OpenVPN Instanzen entfernen
- alte Freigabeverzeichnisse u. User auf CA Server entfernen
- Aktivierung CADIR Check UGW/User VPN Instanzen
- (erledigt) neue Schlüsselpaare aktivieren
- CRL Monitoring
- REST API zur Anbindung an die Opennet FW?
- GPG / X.509 signierter Mailversand?
- DNSSEC / TLSA?
- Umstellung OpenVPN ns-cert-type nach remote-cert-tls in Opennet Firmware + Anpassung Zertifikate auf EKU "TLS Server"