Server Installation/Opennet CA: Unterschied zwischen den Versionen
(→Mailversand) |
(→Mailversand) |
||
Zeile 156: | Zeile 156: | ||
==== Mailversand ==== | ==== Mailversand ==== | ||
− | Beim Hochladen über das CSR Webinterface wird eine Benachrichtigung an die CSR-Mailadresse versendet. Als Absender fungiert ebenfalls die CSR-Mailadresse. Beides im PHP-File konfigurierbar. | + | Beim Hochladen über das CSR Webinterface ''csr_upload.php'' wird eine Benachrichtigung an die CSR-Mailadresse versendet. Als Absender fungiert ebenfalls die CSR-Mailadresse. Beides im PHP-File konfigurierbar. |
Beim Signieren und Revoken wird durch das ''opennetca.sh'' Script automatisch eine E-Mail generiert. Diese enthält stets das Zertifikat, einen kurzen Infotext sowie Metaangaben zum Zertifikat. Empfänger ist die Mailadresse im Zertifikat sowie die CSR-Mailadresse (konfigurierbar im Configfile). | Beim Signieren und Revoken wird durch das ''opennetca.sh'' Script automatisch eine E-Mail generiert. Diese enthält stets das Zertifikat, einen kurzen Infotext sowie Metaangaben zum Zertifikat. Empfänger ist die Mailadresse im Zertifikat sowie die CSR-Mailadresse (konfigurierbar im Configfile). |
Version vom 26. Januar 2014, 14:38 Uhr
Software für Betrieb der Opennet CA.
Inhaltsverzeichnis |
Voraussetzungen
- openssl - zum Betrieb der CA Funktionen
- mailx, sharutils - zum Versand von E-Mails
- apache2 - für Webseiten
- jq - für JSON
Funktionen
- Signieren von Zertifikatsanfragen
- Zurückziehen von Zertifikaten
- Erstellen der CRL Liste
- Download und CA Verifizierung einer CRL Liste
- Suchen von Zertifikaten über CN
- Logging und integriertes Backup
- automatischer Mailversand
- Erzeugen von Webübersicht
User u. Verzeichnisse
- User "opennetca" mit Home /home/opennetca
- Gruppenmitgliedschaft www-data hinzufügen:
usermod -a -G www-data opennetca
- CA Verzeichnis einrichten:
mkdir cert mkdir crl mkdir csr mkdir .backup touch index.txt touch serial.txt cp <src>/README . cp <src>/opennetca.sh . cp <src>/opennetca.conf . cp <src>/sign.sh . cp <src>/revoke.sh . cp <src>/crl.sh . cp <src>/opennet-*.crt . cp <src>/opennet-*.key . cp <src>/opennet-*.conf . chown -R opennetca:opennetca * chmod 600 opennet-*.key
- Öffentliche Webseiten unter /var/www/htdocs/ca.opennet-initiative.de/
- Interne Webseiten unter /var/www/ca_internal/
- Upload Verzeichnis unter /var/www/csr_upload/ - Rechte setzen:
chown www-data:www-data csr_upload chmod g+w csr_upload
Config Files
- OpenSSL Konfiguration: opennet-<ca-name>.ca.on_<year>.conf, notwendige Anpassungen:
[ opennetca ] dir = /home/opennetca/ca/<capath> certificate = $dir/opennet-<caname>.crt private_key = $dir/opennet-<caname>.key [ opennetca_certsign ] nsComment = Opennet <caname-text> CA nsCaRevocationUrl = http://ca.opennet-initiative.de/<caname>.crl nsRevocationUrl = http://ca.opennet-initiative.de/<caname>.crl [ opennetca_crl ] fullname=URI:http://ca.opennet-initiative.de/<caname>.crl
- CA Script Konfiguration: opennetca.cfg, notwendige Anpassungen:
# variables global CA_CONFIG=opennet-<caname>.conf CA_MAILSUBJECT="Opennet CA (<caname>)" # variables sign CA_CSRCN="<cn-extension1> <cn-extension2> .." # variables crl CA_CRL=<caname>.crl
CA Scripts
Download per Web: http://svn.opennet-initiative.de/listing.php?repname=on_opennetca
Checkout per SVN: svn checkout svn://svn.opennet-initiative.de/on_opennetca
- Opennet CA: opennetca.sh (Basisfunktionen, benötigt Konfiguration opennetca.conf)
- Zertifikat signieren: sign.sh (verwendet opennetca.sh sign Methode)
- Zertifikat zurückziehen: revoke.sh (verwendet opennetca.sh revoke Methode)
- CRL Liste erstellen: crl.sh (verwendet opennetca.sh crl Methode)
- Cert Suche: list.sh (verwendet opennetca.sh list Methode)
- Cert Liste in HTML: opennetca_htmlview.sh (eigenständiges Script)
- CRL Download: opennetca_crldownload.sh (eigenständiges Script, nur benötigt auf VPN Server)
- Zertifikat automatisch signieren: sign_batch.sh (verwendet opennetca.sh sign_batch Methode)
Diese Files für jede CA bereitstellen. Keine Anpassung notwendig.
CSR Scripts
Ergänzend zu den CA Scripts:
- CSR Upload: index.html und csr_upload.php (Hochladefunktion)
- CSR Liste in HTML: opennetcsr_htmlview.sh (Übersicht CSR Status und Approve Webinterface)
- CSR Sign Batch Prozess: opennetcsr_signbatch.sh (Approved CSRs anzeigen bzw. automatisch mit passender CA signieren)
CSR JSON
Zur Verwaltung des CSR Lebenszyklus:
{ "meta_type":"Opennet_CSR_JSON_v1", "meta_created":"<Timestamp>", "name":"<Filename>", "subject_o":"<Name>", "subject_cn":"<Node>", "subject_mail":"<Mail>", "digest":"<Digest>", "cn_filter":"<CN-Filter>", "upload_timestamp":"<Timestamp>", "upload_advisor":"<Advisor-Name>", "upload_ccmail":"<CC-Mail>", "status":"CSR|Approved|Signed|Error", "approve_message":"<Message>", "approve_timestamp":"<Timestamp>", "sign_message":"<Message>", "sign_timestamp":"<Timestamp>", "error_message":"<Message>", "error_timestamp":"<Timestamp>", }
Cronjobs
Regelmäßige CRL Listen Erstellung und Bereitstellung:
# Opennet CA CRL Generator 15 1,13 * * * opennetca /home/opennetca/ca/root/crl.sh 2>/dev/null 15 1,13 * * * opennetca /home/opennetca/ca/vpnuser/crl.sh 2>/dev/null 15 1,13 * * * opennetca /home/opennetca/ca/vpnugw/crl.sh 2>/dev/null 15 1,13 * * * opennetca /home/opennetca/ca/client/crl.sh 2>/dev/null 25 1,13 * * * root cp /home/opennetca/ca/root/crl/*.crl /var/www/htdocs/ca.opennet-initiative.de/ 25 1,13 * * * root cp /home/opennetca/ca/vpnuser/crl/*.crl /var/www/htdocs/ca.opennet-initiative.de/ 25 1,13 * * * root cp /home/opennetca/ca/vpnugw/crl/*.crl /var/www/htdocs/ca.opennet-initiative.de/ 25 1,13 * * * root cp /home/opennetca/ca/client/crl/*.crl /var/www/htdocs/ca.opennet-initiative.de/
Inhaltliche CRL Kontrolle per (u.a. Revoked Certificates):
openssl crl -text -in crl/<crlfile>.crl -CAfile <cafile>.crt
Öffentliche anonymisierte und geschütze private Zertifikatsliste bereitstellen:
# Opennet CA Cert List Generator 30 1,13 * * * root /home/opennetca/ca/root/opennetca_htmlview.sh --public >/var/www/htdocs/ca.opennet-initiative.de/root.html 30 1,13 * * * root /home/opennetca/ca/root/opennetca_htmlview.sh --private >/var/www/ca_internal/root.html */10 * * * * root /home/opennetca/ca/vpnuser/opennetca_htmlview.sh --public >/var/www/htdocs/ca.opennet-initiative.de/vpnuser.html */10 * * * * root /home/opennetca/ca/vpnuser/opennetca_htmlview.sh --private >/var/www/ca_internal/vpnuser.html */10 * * * * root /home/opennetca/ca/vpnugw/opennetca_htmlview.sh --public >/var/www/htdocs/ca.opennet-initiative.de/vpnugw.html */10 * * * * root /home/opennetca/ca/vpnugw/opennetca_htmlview.sh --private >/var/www/ca_internal/vpnugw.html */10 * * * * root /home/opennetca/ca/client/opennetca_htmlview.sh --public >/var/www/htdocs/ca.opennet-initiative.de/client.html */10 * * * * root /home/opennetca/ca/client/opennetca_htmlview.sh --private >/var/www/ca_internal/client.html
Öffentliche anonymisierte und geschütze private CSR Statusliste bereitstellen:
# Opennet CSR List Generator */10 * * * * root /home/opennetca/csr/opennetcsr_htmlview.sh --public >/var/www/htdocs/ca.opennet-initiative.de/csr.html */10 * * * * root /home/opennetca/csr/opennetcsr_htmlview.sh --private >/var/www/ca_internal/csr.html
Auf den Opennet VPN-Servern muss ebenfalls ein Cronjob angelegt werden, mm die CRLs regelmäßig zu aktualisieren. Details siehe Server Installation/OpenVPN.
Mailversand
Beim Hochladen über das CSR Webinterface csr_upload.php wird eine Benachrichtigung an die CSR-Mailadresse versendet. Als Absender fungiert ebenfalls die CSR-Mailadresse. Beides im PHP-File konfigurierbar.
Beim Signieren und Revoken wird durch das opennetca.sh Script automatisch eine E-Mail generiert. Diese enthält stets das Zertifikat, einen kurzen Infotext sowie Metaangaben zum Zertifikat. Empfänger ist die Mailadresse im Zertifikat sowie die CSR-Mailadresse (konfigurierbar im Configfile).
Als Absender der Mail wird der Username vom Server, unter dem die CA installiert ist, verwendet (hier: opennetca - AT - opennet-initiative.de). Zum Empfang von möglichen Rückantworten ist opennetca - AT - opennet-initiative.de daher mit Weiterleitung zu admin eingerichtet.
Webserver
- HTTP (ca)
TODO
- HTTPS (ca-ssl
TODO