Apache Konfiguration mit SSL Zertifikat von Let’s Encrypt unter Debian

Seit 4. Dezember ist es mit Let’s Encrypt möglich, anerkannte SSL Zertifikate kostenlos zu beantragen und zu nutzen. Das geht mit dem von Let’s Encrypt zur Verfügung gestellten Tool fast komplett automatisch. Dieses Tutorial beschreibt die manuelle Methode ohne Einsatz des Tools zur automatischen Apache Konfiguration.

Schritt 1: git Repository klonen

Zuerst muss die aktuellste Version des Let’s Encrypt Tools heruntergeladen (geklont) werden. Das geht am einfachsten mit git. Hierzu sollte man zuerst sicherstellen dass git überhaupt installiert ist.

apt-get install git

Danach klont man das Repository von Let’s Encrypt.

cd ~ && git clone https://github.com/letsencrypt/letsencrypt

Schritt 2: Apache stoppen

Läuft auf dem Server bereits ein Apache Webserver muss dieser vor dem Ausführen des Tools gestoppt werden.

service apache2 stop

Schritt 3: Let’s encrypt ausführen und Zertifikat erstellen

Dank des Tools von Let’s Encrypt läuft der komplette Prozess der Erstellung von Schlüsseln, CSR etc. automatisiert.

cd ~/letsencrypt && ./letsencrypt-auto certonly --standalone --rsa-key-size 4096 -d domain.com -d www.domain.com

Hier muss unbedingt jede Domain angegeben die per SSL verschlüsselt werden soll. Standard ist die 2nd Level Domain (z.B. domain.com) und 3rd Level Domain (z.B. www.domain.com).

Schritt 4: Apache Konfiguration anpassen

Um das erstellte Zertifikat einzubinden wird ein neuer Apache Host angelegt. Die Konfiguration des Hosts sollte je nach Setup folgendermaßen aussehen.

<IfModule mod_ssl.c>
<VirtualHost *:443>

# Virtual host settings
ServerAdmin admin@domain.com
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www

<Directory /var/www/>
Options -Indexes -ExecCGI -Includes
AllowOverride All
Order allow,deny
allow from all
</Directory>

# SSL basic settings
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem

# SSL security settings (visit https://weakdh.org/sysadmin.html)
# Also check https://wiki.mozilla.org/Security/Server_Side_TLS for updates regarding SSLCipherSuite
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
# The simplest way of generating a new DH group is "dhparam -out dhparams.pem 2048".
# In newer versions of Apache (2.4.8 and newer) and OpenSSL 1.0.2 or later, you can directly specify your DH params file as follows:
# SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
# If you are using Apache 2.4.7 and OpenSSL 0.9.8a or later, you can append the DHparams to the end of your certificate file.

# Logfile settings
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
</IfModule>

Schritt 5: SSL aktivieren

Ist mod_ssl nicht aktiviert wird die neue Konfiguration erstmal nicht funktionieren. Mit folgendem Befehl wird sichergestellt dass mod_ssl aktiviert ist.

a2enmod ssl

Schritt 6: Apache starten

service apache start

Schritt 7: SSL Zertifikat testen

Mit einem Aufruf der Seite https://www.domain.com kann überprüft werden ob alles korrekt eingebunden wurde. Wenn nicht helfen die Apache Logfiles.

Wer es etwas genauer wissen will, sollte den Test den Qualys SSL Test ausprobieren. Ist alles richtig implementiert sollte das Ergebnis in etwa so aussehen.

rootathome_ssl_grade

Schritt 8 (optional): HTTPS Verbindung erzwingen

Ist erwünscht, dass jeder Benutzer per HTTPS auf der Seite landet, reicht ein kleiner Rewrite in der Konfiguration von Apache.

<VirtualHost *:80>
# Virtual host settings
ServerAdmin admin@domain.com
ServerName domain.com
ServerAlias www.domain.com

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com$1 [R,L]
</VirtualHost>

Bei Fehlern hilft meist das Apache Logfile, die Let’s Encrypt Community oder natürlich die Kommentarfunktion unten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.