Mod ssl: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= TMP =
'''topic''' - Kurzbeschreibung
== Einleitung ==
== Beschreibung ==
Aktivierung der [wikipedia:Transport_Layer_Security: SSL-Verschlüsselung] für den Webserver [:Apache:Apache2].
Aktivierung der Transport Layer Security/SSL-Verschlüsselung für den Webserver [[Apache HTTP Server]]
* Der Artikel zur Erzeugung eines dazu nötigen SSL-Zertifikates samt zugehörigem privaten Schlüssel findet sich ab sofort hier: [:TLS-Zertifikate:] .
* Erzeugung eines SSL-Zertifikates/Privaten Schlüssel: siehe [[TLS-Zertifikate]]


== Installation ==
== Installation ==
Das SSL-Modul des Apache wird zusammen mit der Installation von [:Apache_2.4/#Installation:] installiert.
Das SSL-Modul des Apache wird zusammen mit der Installation von [[Apache/HTTP/Installation]] installiert


== Benutzung ==
== Benutzung ==
Zeile 25: Zeile 25:


=== SSL-Webseite konfigurieren ===
=== SSL-Webseite konfigurieren ===
Abschließend muss nur noch ein [:Apache/Virtual_Hosts:Virtual Host] für TLS/SSL eingerichtet werden. Im folgenden Beispiel wird davon ausgegangen, dass ein SSL-Zertifikat unter '''/etc/ssl/certs/apache.crt''' und ein zugehöriger Schlüssel unter '''/etc/ssl/private/apache.key''' abgelegt wurde.
Abschließend muss nur noch ein [[Apache/HTTP/Virtuelle Server | Host]] für TLS/SSL eingerichtet werden. Im folgenden Beispiel wird davon ausgegangen, dass ein SSL-Zertifikat unter '''/etc/ssl/certs/apache.crt''' und ein zugehöriger Schlüssel unter '''/etc/ssl/private/apache.key''' abgelegt wurde.


Für die Konfiguration wird die Datei '''/etc/apache2/sites-available/ssl.conf''' mit folgendem Inhalt erstellt:
Für die Konfiguration wird die Datei '''/etc/apache2/sites-available/ssl.conf''' mit folgendem Inhalt erstellt:
Zeile 32: Zeile 32:
     SSLCertificateFile /etc/ssl/certs/apache.crt
     SSLCertificateFile /etc/ssl/certs/apache.crt
     SSLCertificateKeyFile /etc/ssl/private/apache.key
     SSLCertificateKeyFile /etc/ssl/private/apache.key
 
     # Pfad zu den Webinhalten
     # Pfad zu den Webinhalten
     DocumentRoot /var/www/html/
     DocumentRoot /var/www/html/
Zeile 92: Zeile 92:
  VirtualHost *:443
  VirtualHost *:443


== Links ==
<noinclude>
=== intern ===
== Anhang ==
* [:SSL:] Erlangung eines SSL-Zertifikates
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
----
[[SSL]] Erlangung eines SSL-Zertifikates


=== extern ===
==== Links ====
===== Weblinks =====
# https://wiki.ubuntuusers.de/TLS-Zertifikate/
# [http://httpd.apache.org/docs/2.4/ssl/ mod_ssl]  - Dokumentation bei apache.org
# [http://httpd.apache.org/docs/2.4/ssl/ mod_ssl]  - Dokumentation bei apache.org
# [github:nabla-c0d3/sslyze:SSLyze]  - umfangreiche Testsuite für SSL-Server
# [github:nabla-c0d3/sslyze:SSLyze]  - umfangreiche Testsuite für SSL-Server
Zeile 106: Zeile 111:


[[Kategorie:Apache/HTTP/Module]]
[[Kategorie:Apache/HTTP/Module]]
</noinclude>

Aktuelle Version vom 6. Mai 2024, 17:27 Uhr

topic - Kurzbeschreibung

Beschreibung

Aktivierung der Transport Layer Security/SSL-Verschlüsselung für den Webserver Apache HTTP Server

  • Erzeugung eines SSL-Zertifikates/Privaten Schlüssel: siehe TLS-Zertifikate

Installation

Das SSL-Modul des Apache wird zusammen mit der Installation von Apache/HTTP/Installation installiert

Benutzung

Modul aktivieren

Zur Verwendung muss das Modul noch einmalig aktiviert werden. Das geschieht mit den Kommandos

sudo a2enmod ssl
sudo service apache2 restart

Konfiguration

Um TLS/SSL verwenden zu können, muss der Apache auf TCP-Port `443` lauschen. Dies wird in der Datei /etc/apache2/ports.conf definiert. Wichtig ist dabei der Abschnitt

<IfModule ssl_module>
    Listen 443
</IfModule>

In älteren Apache-Versionen ist dieser Abschnitt u.U. auskommentiert und damit abgeschaltet. Zur Aktivierung müssen lediglich die Kommentarzeichen (vorangestellte #) entfernt werden.

Nach dieser Änderung muss die Konfiguration des Apache neu eingelesen werden:

sudo service apache2 reload

SSL-Webseite konfigurieren

Abschließend muss nur noch ein Host für TLS/SSL eingerichtet werden. Im folgenden Beispiel wird davon ausgegangen, dass ein SSL-Zertifikat unter /etc/ssl/certs/apache.crt und ein zugehöriger Schlüssel unter /etc/ssl/private/apache.key abgelegt wurde.

Für die Konfiguration wird die Datei /etc/apache2/sites-available/ssl.conf mit folgendem Inhalt erstellt:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache.crt
    SSLCertificateKeyFile /etc/ssl/private/apache.key

    # Pfad zu den Webinhalten
    DocumentRoot /var/www/html/
</VirtualHost>

Dieser VirtualHost wird nun mit

sudo a2ensite ssl.conf

aktiviert.

Anschließend lässt man den Apache die Konfiguration und lädt bei Erfolg die Konfiguration in den laufenden Apache:

sudo apache2ctl configtest && sudo service apache2 reload

Ausbau

SSL erzwingen

Oftmals wird gewünscht, dass Seiten nur über `https://` erreicht werden können.

Dies kann in vielen Fällen einfach mit der Apache Redirect-Directive oder mit dem Apache-Modul [:Apache/mod_rewrite/#Alles-auf-HTTPS-umleiten:mod_rewrite] erreicht werden.

<VirtualHost *:80>
    Redirect permanent / https://SERVER_NAME/
</VirtualHost>

HSTS

Um die Sicherheit noch weiter zu erhöhen, kann das [wikipedia:Hypertext_Transfer_Protocol_Secure#HSTS: HTTP Strict Transport Security (HSTS)]-Verfahren eingesetzt werden. Dadurch werden z. B. [wikipedia:Man-in-the-middle-Angriff: Man-in-the-middle-Angriffe] erschwert.

Um diese Funktion nutzen zu können, muss zuerst das Modul `mod_headers` aktiviert werden:

sudo a2enmod headers

Anschließend muss in der vHost-Konfigurationsdatei (Port 443) folgende Zeile ergänzt werden:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains;"

Mit der `max-age`-Angabe wird dem Browser mitgeteilt, dass die entsprechende Website in den nächsten 365 Tagen (= 31536000 Sekunden) nur noch via HTTPS aufgerufen werden soll.

Um die Änderungen wirksam zu machen, wird die Konfiguration neu geladen:

sudo service apache2 reload

Problembehebung

Port 443 schon von Apache selbst belegt

Erscheint beim Starten des Servers die Fehlermeldung

> (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
>
> no listening sockets available, shutting down

so sollten die Einträge in /etc/apache2/ports.conf überprüft werden. Dort darf der Eintrag

#!code apache
Listen 443

nur einmal vorhanden sein. Auch in anderen Dateien der Apache-Konfiguration darf diese Direktive nicht nochmal vorkommen!

SSL-Fehlermeldung beim Verbindungsaufbau

Erscheint beim Seitenaufruf im Browser die Fehlermeldung

> ssl_error_rx_record_too_long

liegt das meist an fehlerhaft konfigurierten vHosts.

Es sollten zwei VirtualHost-Einträge innerhalb der Dateien in /etc/apache2/sites-available/ vorhanden sein:

#!code apache
VirtualHost *:80
VirtualHost *:443


Anhang

Siehe auch


SSL Erlangung eines SSL-Zertifikates

Links

Weblinks
  1. https://wiki.ubuntuusers.de/TLS-Zertifikate/
  2. mod_ssl - Dokumentation bei apache.org
  3. [github:nabla-c0d3/sslyze:SSLyze] - umfangreiche Testsuite für SSL-Server
  4. SSL Server Test - Online-Prüfung, Qualys SSL Labs
  5. [wikipedia:SSL-Verschlüsselung: SSL-Verschlüsselung]