Ich versuche, SSL auf meinem Apache2-Webserver einzurichten, aber es scheint, dass es überhaupt nicht funktioniert.
Ich habe ein Tutorial zum Erstellen von Zertifikatsdateien mit OpenSSL befolgt und diese /etc/apache2/sites-available/default-ssl.conf
ordnungsgemäß konfiguriert.
Jedes Mal, wenn ich versuche, meine Website mit https zu öffnen, verweigert mein Browser aus Sicherheitsgründen die Verbindung. Es heißt, ich hätte meine Website nicht richtig konfiguriert.
Ich /var/log/apache2/error.log
erhalte Warnungen, dass mein Serverzertifikat keine ID enthält, die mit dem Servernamen übereinstimmt.
[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'
Haben Sie Ideen, wie man das Problem lösen kann? Vielen Dank dafür!
Antwort1
Okay, mir ist aufgefallen, dass dieser Beitrag in letzter Zeit ziemlich oft aufgerufen wurde. Es scheint also, dass viele Leute dasselbe Problem haben wie ich. Wenn ja, könnte Ihnen das hier helfen.
Ich habe ein einfaches Schritt-für-Schritt-Tutorial befolgt, um eine SSL-Zertifizierung für meinen Webserver zu erstellen. Wie bei so vielen anderen Tutorials war das Ergebnis des Tutorials, das ich befolgt habe, ein selbstsigniertes Zertifikat mit OpenSSL. Jaselbst signiert, das war das Problem. Der Browser konnte dem Server aufgrund seines von ihm selbst signierten Zertifikats nicht vertrauen. Also, ich würde beides nicht tun...
Ein Zertifikat muss von einer externen vertrauenswürdigen Zertifizierungsstelle (CA) signiert sein. So stieß ich aufLass uns verschlüsselndas die ganze Arbeit für Sie erledigt, noch einfacher einzurichten ist und das Beste ist: es ist absolut kostenlos.
Installation
1) Löschen Sie Ihre alten SSL-Zertifikatdateien, die Sie mit OpenSSL erstellt haben
2) Öffnen Sie Backports, um den Certbot-Client unter Debian zu erhalten. Sie sollten wissen, dass dies eine Lücke für unfertige Software öffnet! Installieren Sie die Pakete nur, wenn Sie wissen, was Sie tun.
echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
3) Aktualisieren Sie Ihr Linux-System
sudo apt-get update
4) Installieren Sie certbot
sudo apt-get install python-certbot-apache -t jessie-backports
5) Apache-Servername und Serveralias einrichten
sudo nano /etc/apache2/sites-available/000-default.conf
6) Bearbeiten Sie die Apache-Konfigurationsdatei
<VirtualHost *:80>
. . .
ServerName example.com
ServerAlias www.example.com
. . .
</VirtualHost>
7) Überprüfen Sie die korrekte Syntax
sudo apache2ctl configtest
8) Wenn die Konfigurationsdatei in Ordnung ist, starten Sie den Apache-Server neu
sudo systemctl restart apache2
9) Richten Sie mit Certbot ein Zertifikat ein und folgen Sie den Anweisungen auf dem Bildschirm.
sudo certbot --apache
Erneuerung
Alle Zertifikate von Let's Encrypt sind 3 Monate gültig. Um sie zu erneuern, können Sie manuell ausführen
sudo certbot renew
Oder automatisieren Sie diesen Dienst als Cron-Job
sudo crontab -e
und geben Sie die folgende Zeile ein, um jeden Montag um 2:30 Uhr eine Verlängerung aufzurufen.
. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
Eine ausführlichere Anleitung finden Sie hier:https://www.digitalocean.com/community/tutorials/wie-sichert-man-apache-mit-let-s-encrypt-auf-debian-8
Antwort2
In meinem Fall habe ich dies gelöst, indem ich in meiner Apache-SSL-Konfigurationsdatei für jede betroffene Domäne Folgendes ersetzt habe:
ServerName mydomain.com
ServerAlias www.mydomain.com
von :
ServerName www.mydomain.com
ServerAlias mydomain.com
Weil mein Zertifikat für "www.mydomain.com" und nicht für "mydomain.com" ist
vollständige Apache-Datei:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
<Directory />
Options +FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/mydomain.com/public_html>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Antwort3
Wenn keine anderen SSL-Fehler angezeigt werden und Sie versucht haben, „LogLevel debug“ in der Datei httpd.conf festzulegen, kann diese Fehlermeldung auch darauf hinweisen, dass „Listen 443“ in der Datei httpd.conf fehlt.
Antwort4
Dieses Problem trat bei mir vor Kurzem auf, als mein selbstsigniertes Zertifikat abgelaufen war. Ich habe gegoogelt und einfach den Befehl zum Erstellen eines neuen Zertifikats von einer Website kopiert.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/apache2/ssl/apache.crt
In meiner Apache-Konfigurationsdatei: /etc/apache2/sites-available/default-ssl.conf. Die Zertifikatsdatei und die Schlüsseldatei verweisen auf den folgenden Dateinamen.
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Daher ließ sich der hier in meinem Fall aufgetretene Fehler leichter beheben, indem ich beim Erstellen des SSL-Zertifikats einfach den richtigen Speicherort der Zertifikatsschlüsseldatei angab.
Hier ist also der Befehl, den ich hätte verwenden und richtig eingeben sollen.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt