Debian SSL / HTTPS mit Apache2 einrichten

Einleitung

Hi,
seit der weltweiten Überwachung der NSA wissen wir alle das Verschlüsselung wichtig ist. Wie Ihr selbst HTTPS auf eurer Seite einrichtet zeige ich heute in einem kurzen Tutorial. Ich weise noch mal darauf hin das selbst erstellte Zertifikate bitte nur Lokal und zu Testzwecken genutzt werden sollten. Ok dann lasst uns beginnen.

Voraussetzungen:

Ihr benötigt Debian mit installiertem OpenSSL Modul und den Apache2 Webserver. Den Rest werden wir hier zusammen installieren.

SSL Zertifikat erstellen / generieren

Mit Hilfe von OpenSSL können wir uns in relativ wenigen Schritten ein eigenes Zertifikat erstellen.

1. Ordner zum speichern des Zertifikates erstellen und dorthin wechseln

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

3. Jetzt erstellen wir unseren privaten Key

openssl genrsa -out sslcert.key 2048

4. Aus dem Key generieren wir nun eine CSR Datei (Zertifizierungsanforderung oder auch engl. Certificate Signing Request). Diese enthält vereinfacht gesagt die Zertifikats Informationen.

openssl req -new -key sslcert.key -out sslcert.csr

Anschließend muss eine Reihe von Informationen eingegeben werden. In unserem Fall geben wir bei „CommonName“ localhost ein da wir das Zertifikat für eine lokale Entwicklungsumgebung erstellen. Sie können auch alle anderen Felder leer lassen und diese mit „Enter“ überspringen.

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

5. Jetzt können wir aus der CSR Datei unser Zertifikat generieren. Die Gültigkeitsdauer des Zertifikates kann mit dem Parameter -days angegeben werden. In unserem Fall ist es 1 Jahr gültig.

openssl x509 -req -days 365 -in sslcert.csr -signkey sslcert.key -out sslcert.crt

Apache2 konfigurieren

1. Damit der Apache2 Webserver mit dem Zertifikat umgehen kann aktivieren wir zu nächst das „SSL Modul“.

a2enmod ssl
a2ensite default-ssl

2. Damit der Apache auf auf dem richtigen Port lauscht überprüfen wir die „ports.conf“ im Ordner /etc/apache2/

cat /etc/apache2/ports.conf

Die Datei sollte in etwa so aussehen. Wichtig ist das auf Port 443 gelauscht wird.

Listen 80


        Listen 443



        Listen 443


3. Jetzt erstellen wir noch eine neue Vhost Config für den SSL Port.

nano /etc/apache2/sites-available/application-ssl.conf

Diese füllen wir dann mit folgendem Inhalt:


    DocumentRoot /var/www/application/public

    ErrorLog /var/www/application/log/error.log
    CustomLog /var/www/application/log/access.log combined

    SSLEngine on
    SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key
    SSLCertificateFile /etc/apache2/ssl/sslcert.crt

    

        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

    

4. Im letzten Schritt starten wir Apache neu

service apache2 restart

Eure Seite sollte jetzt über https aufrufbar sein. Die Sicherheitswarnung im Firefox / Chrome sind normal, diese könnt Ihr einfach akzeptieren.
Ich empfehle euch aber diese Konfiguration nur für Lokale Entwicklungsumgebungen! Für produktive Umgebungen bitte noch mal gründlich in SSL einlesen und ein Zertifikat von einem anerkannten Zertifikatsanbieter nehmen.

15 Comments

  • Ich erhalte nach der Durchführung diesen Fehler:
    Ein Fehler ist während einer Verbindung mit domain.de aufgetreten. SSL hat einen Eintrag erhalten, der die maximal erlaubte Länge überschritten hat. Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG

  • Kann es sein das du irgend etwas vergessen hast? Welchen Webserver benutz du?

  • Moin, hab genau das selbe Problem: SSL_ERROR_RX_RECORD_TOO_LONG

    Apache 2.4.25 auf Debian 9

    Die Erzeugung der Zertifikate lief ohne jegliche Probleme/Fehler

  • Ich hab hier unter Debian 9.6 die gleiche Fehlermeldung. Habe es noch mehrmals mit deiner Beschreibung versucht. identischer Fehler. Wo kann ich ansetzen? Hast du eine Idee?

  • Bei beschriebenen Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG
    folgende Zeile noch ausführen und dann apache neu starten
    a2ensite default-ssl

  • Leider bekomme ich, ebenso wie beim ersten Kommentar, den Fehler SSL_ERROR_RX_RECORD_TOO_LONG. Die Anleitung ist so leider nicht zu gebrauchen.
    Meine Umgebung: Ein frisches Debian 10 mit dem Apache 2.
    Schade.

  • Dann such halt den Fehler, und poste den hier, damit währe allen geholfen .

  • Der Fehler ist beim VirtualHost Code

    Lösung: VirtualHost _default_:443

    statt: VirtualHost

    Also einfach "_default_:443" anfügen

  • Soweit ich sehe wird zwar die Seite "application-ssl" angelegt, aber nicht aktiviert (enabled).
    Wir können die Seite aktivieren mit:
    a2ensite application-ssl
    Nun muss die Konfiguration noch neu geladen werden:
    systemctl reload apache2

  • Was hier geholfen hat (Debian 10.4):

    Standard-SSL-Seite einschalten:
    a2ensite default-ssl

    Darin (sudo nano /etc/apache2/sites-available/default-ssl.conf) die alten Schlüssel auskommentieren und die neuen Schlüssel deklarieren:
    SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key
    SSLCertificateFile /etc/apache2/ssl/sslcert.crt

    dann nochmal
    service apache2 restart

  • Folgendes hat unter Raspbian Buster mit Apache 2.4.38 geholfen:
    In der application-ssl.conf muss in Zeile 1 hinter virtualhost noch "*:443" (ohne Anführungszeichen)innerhalb der spitzen Klammer ergänzt werden. Das beseitigt den Fehler SSL_ERROR_RX_RECORD_TOO_LONG.

    Danach wird die directory-Zeile (Zeile 11) bemängelt. Hier hilft es, anstatt der Pfad-Teile application="" usw. den richtigen Pfad "/var/www/application/public" einzugeben.

    Zudem muss die gerade erstellte Konfigurationsdatei aktiviert werden ("sudo a2ensite application-ssl"), nicht die default-ssl.conf.

    Die Befehle a2enmod und a2ensite bringen jeweils einen Hinweis mit, dass für Apache2 noch ein restart oder ein reload erforderlich ist, um die Änderungen zu aktivieren.

  • Hallo, gibt es zwischenzeitlich eine Lösung für das Problem SSL_ERROR_RX_RECORD_TOO_LONG? Bei mir kommt ebenfalls immer der gleiche Fehler.

    Ich habe diese Anleitung jetzt mehrmals durchgeführt und auch jedes Mal den Server extra frisch aufgesetzt, damit ich andere Konfigurationsprobleme ausschließen kann. Er funktioniert jedes Mal einwandfrei, bis ich mit dieser Anleitung auf https umstellen will. Dann kommt der Fehler erneut.

    Gruß Andre

  • Hallo, gibt es zwischenzeitlich eine Lösung für das Problem mit SSL_ERROR_RX_RECORD_TOO_LONG? Bei mir ist das Ergebnis auch der Fehler. Ich habe diese Anleitung mehrmals getestet. Um auf Nummer sicher zu gehen habe ich auch jedesmal den Server neu eingerichtet. Er funktioniert dann einwandfrei, bis ich mit dieser Anleitung auf https um stellen will. Dann lande ich ebenfalls bei diesem Fehler.

    Gruß Andre

  • So, tatsächlich stand die Lösung bereits in einem Post. DIes sollte eventuell irgendwie hier mal markiert werden und die Anleitung vervollständigt, da man dies hier schnell überliest.

    An der Stelle wo man "a2enmod ssl" eintippt, einfach im Anschluss noch "a2ensite default-ssl" eingeben. Und läuft !!

    Gruss Andre

  • Danke wurde ergänzt

Leave a Comment

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

Diese Seite verwendet Cookies, um die Nutzerfreundlichkeit zu verbessern. Mit der weiteren Verwendung stimmst du dem zu.