Wie konfiguriere ich SSL in Apache?

Wie konfiguriere ich SSL in Apache?

Ich habe Apache in RHEL 6 installiert. Alles funktioniert einwandfrei. Welche Änderungen und Konfigurationen müssen vorgenommen werden, um https://localhost:443/.

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

„Fehler 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL-Protokollfehler.“

Antwort1

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

Schritt 1:Verwenden Sie OpenSSL, um die Schlüssel zu erstellen, die zum Sichern Ihrer Site verwendet werden. Diese Schlüssel werden zum Verschlüsseln und Entschlüsseln des Datenverkehrs zu Ihrer sicheren Site verwendet.

$ openssl genrsa -out mydomain.key 1024

Dieser Befehl erstellt einen 1024-Bit-Privatschlü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:Bewahren Sie den privaten Schlüssel im Verzeichnis /etc/apache2/ssl.key/und das Zertifikat im Verzeichnis auf /etc/apache2/ssl.crt/.

Notiz:Das ssl.keyVerzeichnis darf nur für Root lesbar sein.

Schritt 4:Jetzt müssen Sie httpd.confdie Datei in bearbeiten /etc/apache2.

Nun sollte diese Datei etwa folgenden Inhalt enthalten:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin [email protected]
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 [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

Antwort2

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

Sie können die Standardsite mit SSL erreichen, indem Sie einfach zu navigieren https://localhost(Sie müssen den Port nicht an das Ende der URL anhängen).

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

Der einfachste und sicherste Weg ist die Einrichtung einer permanenten Umleitung. 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

verwandte Informationen