Wie konfiguriere ich SSL in Apache?


10

Ich habe Apache in RHEL 6 installiert. Alles funktioniert einwandfrei. Was sollten alle Änderungen und Konfigurationen vorgenommen werden, um https: // localhost: 443 / zu verwenden .

Wenn ich "Listen 80" auf 443 ändere, wird ein SSL-Verbindungsfehler ausgegeben

"Fehler 107 (net :: ERR_SSL_PROTOCOL_ERROR): SSL-Protokollfehler."

Antworten:


13

Wenn Sie verwenden apache2, müssen Sie Folgendes tun:

Schritt 1: Verwenden Sie OpenSSL, um die Schlüssel zu erstellen, mit denen Ihre Site gesichert wird. Diese Schlüssel werden zum Ver- und Entschlüsseln des Datenverkehrs zu Ihrer sicheren Site verwendet.

$ openssl genrsa -out mydomain.key 1024

Dieser Befehl erstellt einen privaten 1024-Bit-Schlüssel und legt ihn in der Datei mydomain.key ab.

Schritt 2: Generieren Sie Ihr eigenes Zertifikat.

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

Schritt 3: Behalten Sie den privaten Schlüssel im Verzeichnis /etc/apache2/ssl.key/und das Zertifikat im Verzeichnis /etc/apache2/ssl.crt/.

Hinweis: Das ssl.keyVerzeichnis darf nur von root gelesen werden.

Schritt 4: Jetzt müssen Sie die httpd.confDatei in bearbeiten /etc/apache2.

Jetzt sollte diese Datei folgenden Inhalt enthalten:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>


<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

Die ersten drei Zeilen sind nicht erforderlich. 1. NameVirtualHostist veraltet und wird in zukünftigen Versionen von Apache entfernt. Es ist derzeit bereits ein No-Op. 2. Listen 443kann Probleme verursachen, wenn Apache bereits so konfiguriert ist, dass es Port 443 überwacht, was bei vielen Linux-Distributionen bereits der Fall ist. Fügen Sie nur hinzu, wenn Sie sicher sind, dass diese Zeile an keiner anderen Stelle konfiguriert ist.
Lanoxx

3

Wechseln Sie nicht Listen 80zu 443in /etc/httpd/conf/httpd.conf. SSL ist in konfiguriert /etc/httpd/conf.d/ssl.conf. Unter RHEL 6 ist SSL aktiviert und überwacht standardmäßig mit einem selbstsignierten Zertifikat.

Sie können mit SSL zur Standardwebsite gelangen, indem Sie einfach zu navigieren https://localhost(Sie müssen den Port nicht am Ende der URL hinzufügen).

Wenn Sie alle HTTP-Anforderungen an HTTPS weiterleiten möchten (was Sie meiner Meinung nach erreichen möchten), können Sie entweder eine permanente Umleitung hinzufügen oder das Apache-Modul verwenden mod_rewrite.

Am einfachsten und sichersten ist es, eine permanente Weiterleitung einzurichten. Aktivieren Sie benannte virtuelle Hosts und fügen Sie Redirectdem VirtualHost in eine Direktive hinzu /etc/httpd/conf/httpd.conf.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

Mit mod_rewriteerstellen Sie auch einen benannten virtuellen Host. Dies ist nicht die empfohlene Methode, funktioniert aber.

NameVirtualHost *:80
<VirtualHost *:80>
   # Enable the Rewrite engine
   RewriteEngine On
   # Make sure the connection is not already HTTPS
   RewriteCond %{HTTPS} !=on
   # This rewrites the URL and forwards to https
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

Wenn Sie SSL deaktivieren möchten, kommentieren Sie diese Zeilen aus /etc/httpd/conf.d/ssl.confund starten Sie Apache neu.

LoadModule ssl_module modules/mod_ssl.so
Listen 443

Wenn Sie das Paket mod_ssl für RHEL6 hinzufügen, wird eine /etc/httpd/conf.d/ssl.conf erstellt, die das Modul lädt und <VirtualHost _default_:443>mit allen erforderlichen Parametern jeweils Kommentare enthält. Das mod_sslPaket wird nicht automatisch installiert, wenn Sie das httpdPaket installiert haben .
jsbillings

1
Ich möchte Ihrem Umschreiben nur eines hinzufügen: Verwenden Sie [R=301,L]statt nur [R,L], auf diese Weise verwendet das Umschreiben die permanente Option der HTTP 3xx- Statuscodes.
Dcestari
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.