Zum Inhalt springen

Benutzer:MathiasMahnke/CA Cert Renewal 2013: Unterschied zwischen den Versionen

Aus Opennet
Inhalt gelöscht Inhalt hinzugefügt
MathiasMahnke (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
MathiasMahnke (Diskussion | Beiträge)
 
(135 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Ziel ===
=== Ziel ===


Im April 2015 läuft das Opennet Root CA Zertifikat aus, es folgen einige Zertifikate aus der Anfangszeit, die dann ebenfalls nach uns nach ablaufen.
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
* 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 16: Zeile 17:
(Als Idee / Gedankenstütze)
(Als Idee / Gedankenstütze)


* bis Sommer 2013 - Übersicht über Zertifikate Schaffen
* bis Sommer 2013 - Übersicht über Zertifikate schaffen
* 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 Inftrastruktur testweise
* Herbst 2014 - Deaktivierung alte CA Infrastruktur testweise
* Frühjahr 2015 - Deaktivierung alte CA Inftrastruktur final
* Frühjahr 2015 - Deaktivierung alte CA Infrastruktur final


=== Root CA ===
=== Neue Root CA ===


Umsetzung erfolgt, siehe [[Opennet CA]].
* neues Zertifikat notwendig, neuen CSR erstellen, Parameter? (Vorschlag: 4096 Bit, SHA-265)

* Kompatibilität zu OpenVPN und ggf. weiterer Software vorab prüfen
=== OpenVPN ===
* Erzeugung und Bereitstellung CRL fuer Sub-CA unter http://ca.opennet-initiative.de/crl?

* 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]].

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

=== 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}'

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

* 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

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

* (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"

Aktuelle Version vom 5. März 2022, 18:20 Uhr

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

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

Neue Root CA

Umsetzung erfolgt, siehe Opennet CA.

OpenVPN

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.

CRL / OCSP

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

CSR JSON

# 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}'

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

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

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