Transitschutz: DNSSEC und DANE auf Linux-Servern konfigurieren

Seite 2: Zertifikate implantieren

Inhaltsverzeichnis

Die CSR-Datei (Certificate Signing Request) enthält den öffentlichen Schlüssel (Public Key). Schicken Sie nur diese Datei an die CA zur Unterschrift, aber keinesfalls den geheimen Schlüssel – dann wäre er ja nicht mehr geheim.

Ignorieren Sie grundsätzlich CA-Dienste, die Ihnen die angeblich „aufwendige Schlüsselerstellung“ abnehmen und Ihnen die Schlüssel zuschicken wollen. Denn dabei bekommt die CA Zugriff auf Ihren geheimen Schlüssel und kann damit prinzipiell allen Datenverkehr Ihrer Server dechiffrieren. Der Private Key ist also auch in diesem Fall alles andere als privat und folglich wertlos.

Von der CA kommt eine CRT-Datei mit der Unterschrift zurück. Verknüpfen Sie diese Datei mit Ihrem geheimen Schlüssel zur PEM-Datei, dem Zertifikat, das der Server verwendet:

cat example.org.key example.org.crt > example.org.pem
openssl gendh >> example.org.pem
chmod 400 example.org.*
chown www-data:wheel example.org.*

Der OpenSSL-Aufruf mit gendh erzeugt zufällige Diffie-Hellman-Parameter, damit der Server Perfect Forward Secrecy (PFS) nutzen kann. Die chmod- und chown-Aufrufe stellen sicher, dass nur die Nutzer www-data und root die Dateien lesen dürfen.

Beim Webserver NGINX tragen Sie den Pfad der Dateien im http-Abschnitt der Konfigurationsdatei und den Servernamen im darin stehenden server-Block ein:

http {
...
ssl_certificate /etc/ssl/example.org.pem;
ssl_certificate_key /etc/ssl/example.org.key;
...
server {
...
server_name www.example.org;
access_log logs/access_www.example.org.log;
...
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA';
...

Die oben stehende ssl_ciphers-Anweisung beschränkt die Chiffrieralgorithmen auf die aktuell als sicher angesehenen Methoden; unsichere sind mit einem vorangestellten "!" ausgeschlossen. Bei Apache 2.x tragen Sie die SSL-relevanten Parameter (erlaubte Chiffren, Pfade zu Zertifikat und Schlüssel) in die Datei /etc/apache2/default-vhost-ssl.conf ein.

Der häufig verwendete Mailverteiler Postfix benötigt neben den Zertifikatsdateien noch individuelle Zufallswerte für den Diffie-Hellman-Schlüsselaustausch (EDH, Ephemeral Diffie-Hellman key exchange), damit auch er PFS einsetzen kann:

openssl gendh -out /etc/ssl/dh_512.pem -2 512
openssl gendh -out /etc/ssl/dh_1024.pem -2 1024
Die TLS-relevanten Einträge stecken in der Konfigurationsdatei main.cf:
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/example.org.crt
smtpd_tls_key_file = /etc/ssl/example.org.key
...
smtpd_tls_dh1024_param_file = /etc/ssl/dh_1024.pem
smtpd_tls_dh512_param_file = /etc/ssl/dh_512.pem
smtpd_tls_eecdh_grade = strong
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers=high
tls_ssl_options = NO_COMPRESSION
tls_preempt_cipherlist = yes

tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA

Auch hier sind schwache Chiffren per "!" ausgeschlossen. Ferner ist TLS-Komprimierung deaktiviert, weil sie angreifbar ist.