Detaillierte Erklärung zur korrekten Konfiguration von SSL (https-Zertifikat) in Apache unter Ubuntu

Detaillierte Erklärung zur korrekten Konfiguration von SSL (https-Zertifikat) in Apache unter Ubuntu

Schauen Sie sich zunächst das offizielle Tutorial von Alibaba Cloud an:

Dateibeschreibung:

1. Die Zertifikatsdatei xxxxxx.pem besteht aus zwei Abschnitten. Bitte löschen Sie keinen Abschnitt.

2. Wenn die CSR vom Zertifikatssystem erstellt wird, umfasst sie außerdem: die private Zertifikatsschlüsseldatei xxxxxxxx.key, die öffentliche Zertifikatsschlüsseldatei public.pem und die Zertifikatskettendatei chain.pem.

(1) Erstellen Sie ein Zertifikatsverzeichnis unter dem Apache-Installationsverzeichnis und kopieren Sie alle heruntergeladenen Dateien in das Zertifikatsverzeichnis. Wenn Sie die CSR-Datei bei der Beantragung des Zertifikats selbst erstellt haben, legen Sie die entsprechende private Schlüsseldatei bitte in das Zertifikatsverzeichnis und nennen Sie sie xxxxxxxx.key.

(2) Öffnen Sie die Datei httpd.conf im Verzeichnis conf unter dem Apache-Installationsverzeichnis, suchen Sie den folgenden Inhalt und entfernen Sie das "#":

#LoadModule ssl_module module/mod_ssl.so (Wenn es nicht gefunden werden kann, bestätigen Sie bitte, ob das OpenSSL-Plugin kompiliert wurde)
#Conf/extra/httpd-ssl.conf einschließen

(3) Öffnen Sie die Datei conf/extra/httpd-ssl.conf im Apache-Installationsverzeichnis (je nach Betriebssystem und Installationsmethode kann es auch conf.d/ssl.conf sein) und suchen Sie in der Konfigurationsdatei nach der folgenden Konfigurationsanweisung:

# Fügen Sie SSL-Protokollunterstützungsprotokolle hinzu und entfernen Sie unsichere Protokolle SSLProtocol all -SSLv2 -SSLv3
# Ändern Sie die Verschlüsselungssuite wie folgt: SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherBestellen bei
# Zertifikat-Öffentlichkeitsschlüsselkonfiguration SSLCertificateFile cert/public.pem
# Konfiguration des privaten Zertifikatschlüssels SSLCertificateKeyFile cert/xxxxxxx.key
# Zertifikatskettenkonfiguration. Wenn das Attribut mit einem '#'-Zeichen beginnt, löschen Sie es bitte. SSLCertificateChainFile cert/chain.pem

(4) Starten Sie Apache neu.

(5) Greifen Sie über https auf Ihre Site zu, um die Installation und Konfiguration des Site-Zertifikats zu testen. Wenn Sie Probleme mit der Vertrauenswürdigkeit des Zertifikats haben, sehen Sie sich bitte das Hilfevideo an.

Dies dient jedoch nur als Referenz. In Ubuntu habe ich Apache mit apt installiert, aber es gibt keine httpd.conf-Datei, sondern nur eine apache2.conf-Datei. Nun, diese Datei ist ähnlich wie httpd.conf und enthält die folgenden Kommentare:

# Es ist in mehrere Dateien aufgeteilt, die die beschriebene Konfigurationshierarchie bilden
# unten, alles befindet sich im Verzeichnis /etc/apache2/:
#
# /etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- Mods aktiviert
# | |-- *.laden
# | `-- *.conf
# |-- conf-aktiviert
# | `-- *.conf
# `-- sites-enabled
# `-- *.conf
#

Diese Version von Apache verteilt die Konfigurationsdateien auf andere kleine Dateien und die Struktur ist wie oben gezeigt. Wenn Sie möchten, können Sie auch Ihre eigene httpd.conf schreiben und einbinden.

Konzentrieren wir uns auf die Konfiguration von https. Der erste Schritt besteht darin, sicherzustellen, dass Port 443 Ihrer externen Umgebung geöffnet ist.

Der zweite Schritt besteht darin, sicherzustellen, dass Sie ssl_module installiert haben. Wenn nicht, führen Sie einfach apt-get install openssl aus. Einige Abhängigkeiten können erforderlich sein, aber das sind alles kleinere Probleme.

Anschließend öffne die ports.conf, folgende Sätze sind dabei unbedingt erforderlich:

<WennModul ssl_module>
 Hören Sie 443
</IfModule>
 
<IfModule mod_gnutls.c>
 Hören Sie 443
</IfModule>

Öffnen Sie dann mods-available und suchen Sie ssl.conf und ssl.load

ssl.load sieht folgendermaßen aus:

# Hängt ab von: setenvif mime socache_shmcb
LadeModul ssl_module /usr/lib/apache2/modules/mod_ssl.so
ssl.conf sieht folgendermaßen aus:
<IfModule mod_ssl.c>
 
 # Pseudozufallszahlengenerator (PRNG):
 # Konfigurieren Sie eine oder mehrere Quellen, um den PRNG der SSL-Bibliothek zu initialisieren.
 # Die Seed-Daten sollten eine gute Zufallsqualität aufweisen.
 # WARNUNG! Auf einigen Plattformen blockiert /dev/random, wenn nicht genügend Entropie vorhanden ist
 # ist verfügbar. Das bedeutet, dass Sie das Gerät /dev/random dann nicht verwenden können
 # weil es zu sehr langen Verbindungszeiten führen würde (solange
 # es erfordert, mehr Entropie verfügbar zu machen). Aber normalerweise diese
 # Plattformen bieten zusätzlich ein /dev/urandom Gerät, das nicht
 # Block. Wenn verfügbar, verwenden Sie stattdessen diesen. Lesen Sie den mod_ssl-Benutzer
 # Handbuch für weitere Einzelheiten.
 #
 SSLRandomSeed-Start integriert
 SSLRandomSeed-Startdatei:/dev/urandom 512
 Integrierte SSLRandomSeed-Verbindung
 SSLRandomSeed-Verbindungsdatei:/dev/urandom 512
 
 ##
 ## Globaler SSL-Kontext
 ##
 ## Die gesamte SSL-Konfiguration in diesem Kontext gilt sowohl für
 ## der Hauptserver und alle SSL-fähigen virtuellen Hosts.
 ##
 
 #
 # Einige MIME-Typen zum Herunterladen von Zertifikaten und CRLs
 #
 AddType-Anwendung/x-x509-ca-cert .crt
 AddType-Anwendung/x-pkcs7-crl .crl
 
 # Passphrase-Dialog:
 # Konfigurieren Sie den Prozess zum Sammeln von Passphrasen.
 # Das Filterdialogprogramm (`builtin' ist ein internes
 # Terminaldialog) muss die Passphrase auf stdout bereitstellen.
 SSLPassPhraseDialog exec:/usr/share/apache2/nach-passphrase-fragen
 
 # Interprozess-Sitzungscache:
 # Konfigurieren Sie den SSL Session Cache: Zuerst der Mechanismus 
 # zu verwendendes und zweites ablaufendes Timeout (in Sekunden).
 # (Der Mechanismus dbm hat bekannte Speicherlecks und sollte nicht verwendet werden).
 #SSLSessionCache dbm:${APACHE_RUN_DIR}/ssl_scache
 SSLSessionCache shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
 SSLSessionCacheTimeout 300
 
 # Semaphor:
 # Konfigurieren Sie den Pfad zum gegenseitigen Ausschluss-Semaphor.
 # Die SSL-Engine wird intern zur prozessübergreifenden Synchronisierung verwendet. 
 # (Standardmäßig deaktiviert, die globale Mutex-Direktive konsolidiert standardmäßig
 # Das)
 #Mutex-Datei:${APACHE_LOCK_DIR}/ssl_mutex ssl-cache
 
 
 # SSL-Chiffre-Suite:
 # Listet die Chiffren auf, die der Client aushandeln darf. Siehe die
 # ciphers(1) man page aus dem openssl Paket für eine Liste aller verfügbaren
 # Optionen.
 # Nur sichere Chiffren aktivieren:
 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
 
 # Bevorzugte Verschlüsselungsreihenfolge des SSL-Servers:
 # Verwenden Sie Serverprioritäten zur Auswahl des Verschlüsselungsalgorithmus.
 # Clients bevorzugen möglicherweise eine niedrigere Verschlüsselungsstufe. Sie sollten diese aktivieren
 # Option, wenn Sie eine stärkere Verschlüsselung erzwingen möchten und es sich leisten können
 # die CPU-Kosten und hat SSLCipherSuite nicht auf eine Weise überschrieben, die
 # unsichere Chiffren zuerst.
 # Standard: Aus
 SSLHonorCipherBestellen bei
 
 # Die zu aktivierenden Protokolle.
 # Verfügbare Werte: alle, SSLv3, TLSv1, TLSv1.1, TLSv1.2
 # SSL v2 wird nicht mehr unterstützt
 SSL-Protokoll alle -SSLv2 -SSLv3
 
 # Erlauben Sie unsichere Neuverhandlungen mit Clients, die noch nicht die
 # sicheres Neuverhandlungsprotokoll. Standard: Aus
 #SSLInsecureRenegotiation am
 
 # Ob Nicht-SNI-Clients der Zugriff auf namensbasierte virtuelle Hosts verboten werden soll.
 # Standard: Aus
 #SSLStrictSNIVHostCheck Ein
 
</IfModule>
 
# vim: Syntax=Apache ts=4 sw=4 sts=4 sr noet

Als nächstes folgt die Konfiguration der Site. Hier verwenden wir die Standarddatei default-ssl.conf:

<IfModule mod_ssl.c>
 <VirtualHost _default_:443>
 ServerName 
 
 ###################Fügen Sie Ihre eigene Site-Konfiguration hinzu###########
 
 
 
 # Verfügbare Loglevel: trace8, ..., trace1, debug, info, notice, warn,
 # Fehler, kritisch, Alarm, Notfall.
 # Es ist auch möglich, den Loglevel für bestimmte
 # Module, z. B.
 #LogLevel info ssl:warn
 
 Fehlerprotokoll ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log kombiniert
 
 # Für die meisten Konfigurationsdateien aus conf-available/, die
 # global aktiviert oder deaktiviert werden, ist es möglich,
 # eine Zeile für nur einen bestimmten virtuellen Host einschließen. Zum Beispiel die
 # Die folgende Zeile aktiviert die CGI-Konfiguration nur für diesen Host
 # nachdem es mit „a2disconf“ global deaktiviert wurde.
 #Conf-available/serve-cgi-bin.conf einschließen
 
 # SSL-Engine-Schalter:
 # SSL für diesen virtuellen Host aktivieren/deaktivieren.
 SSLEngine ein
 
 # Ein selbstsigniertes (Snakeoil-)Zertifikat kann erstellt werden durch die Installation
 # das ssl-cert-Paket. Siehe
 # /usr/share/doc/apache2/README.Debian.gz für weitere Informationen.
 # Wenn Schlüssel und Zertifikat in der gleichen Datei gespeichert sind, wird nur der
 # SSLCertificateFile-Direktive ist erforderlich.
 SSL-Zertifikatdatei /etc/apache2/cert/public.pem
 SSL-Zertifikatschlüsseldatei /etc/apache2/cert/xxxxxxx.key
 
 # Server-Zertifikatkette:
 # Zeigen Sie mit SSLCertificateChainFile auf eine Datei mit dem
 # Verkettung von PEM-kodierten CA-Zertifikaten, die die
 # Zertifikatskette für das Serverzertifikat. Alternativ
 # die referenzierte Datei kann dieselbe sein wie SSLCertificateFile
 # wenn die CA-Zertifikate direkt an den Server angehängt werden
 # Zertifikat für Bequemlichkeit.
 SSL-Zertifikatkettendatei /etc/apache2/cert/chain.pem
 
 # Zertifizierungsstelle (CA):
 # Legen Sie den CA-Zertifikatsüberprüfungspfad fest, in dem sich die CA befindet
 # Zertifikate zur Client-Authentifizierung oder alternativ eines
 # riesige Datei, die sie alle enthält (Datei muss PEM-kodiert sein)
 # Hinweis: Innerhalb von SSLCACertificatePath benötigen Sie Hash-Symlinks
 # um auf die Zertifikatsdateien zu verweisen. Verwenden Sie die bereitgestellte
 # Makefile zum Aktualisieren der Hash-Symlinks nach Änderungen.
 #SSLCACertificatePath /etc/ssl/certs/
 #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
 
 # Zertifikatsperrlisten (CRL):
 # Legen Sie den CA-Widerrufspfad fest, in dem CA-CRLs für den Client zu finden sind
 # Authentifizierung oder alternativ eine große Datei mit allen
 Anzahl davon (Datei muss PEM-kodiert sein)
 # Hinweis: Innerhalb von SSLCARevocationPath benötigen Sie Hash-Symlinks
 # um auf die Zertifikatsdateien zu verweisen. Verwenden Sie die bereitgestellte
 # Makefile zum Aktualisieren der Hash-Symlinks nach Änderungen.
 #SSLCARevocationPath /etc/apache2/ssl.crl/
 #SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
 
 # Client-Authentifizierung (Typ):
 # Art und Tiefe der Client-Zertifikatsüberprüfung. Die Typen sind
 # keine, optional, erforderlich und optional_no_ca. Tiefe ist ein
 # Zahl, die angibt, wie gründlich das Zertifikat überprüft werden soll
 # Ausstellerkette, bevor entschieden wird, dass das Zertifikat ungültig ist.
 #SSLVerifyClient erforderlich
 #SSLVerifyDepth 10
 
 # SSL-Engine-Optionen:
 # Legen Sie verschiedene Optionen für die SSL-Engine fest.
 # oder FakeBasicAuth:
 # Übersetzen Sie den Client X.509 in eine Basisautorisierung. Das bedeutet, dass
 # Zur Zugriffskontrolle können die Standardmethoden Auth/DBMAuth verwendet werden.
 # Benutzername ist die einzeilige Version des X.509-Zertifikats des Clients.
 # Beachten Sie, dass vom Benutzer kein Passwort abgefragt wird. Jeder Eintrag im Benutzer
 # Datei benötigt dieses Passwort: „xxj31ZMTZzkVA“.
 # o ExportCertData:
 # Dadurch werden zwei zusätzliche Umgebungsvariablen exportiert: SSL_CLIENT_CERT und
 # SSL_SERVER_CERT. Diese enthalten die PEM-kodierten Zertifikate der
 # Server (immer vorhanden) und Client (nur vorhanden, wenn Client
 # Authentifizierung wird verwendet). Dies kann zum Importieren der Zertifikate verwendet werden
 # in CGI-Skripte.
 # oder StdEnvVars:
 # Dadurch werden die standardmäßigen SSL/TLS-bezogenen Umgebungsvariablen „SSL_*“ exportiert.
 # Standardmäßig ist dieser Export aus Performancegründen ausgeschaltet,
 # weil der Extraktionsschritt ein teurer Vorgang ist und normalerweise
 # nutzlos für die Bereitstellung von statischen Inhalten. Daher aktiviert man normalerweise die
 # Export nur für CGI- und SSI-Anfragen.
 # o OptRenegotiate:
 # Dies ermöglicht eine optimierte Neuverhandlung der SSL-Verbindung, wenn SSL
 #-Direktiven werden im Kontext pro Verzeichnis verwendet.
 #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
 <FilesMatch "\.(cgi|shtml|phtml|php)$">
 SSLOptions +StdEnvVars
 </FilesMatch>
 <Verzeichnis /usr/lib/cgi-bin>
 SSLOptions +StdEnvVars
 </Verzeichnis>
 
 # SSL-Protokollanpassungen:
 # Das sichere und standardmäßige, aber dennoch SSL/TLS-Standard-konforme Herunterfahren
 # Ansatz ist, dass mod_ssl den Close-Notify-Alarm sendet, aber nicht wartet auf
 # die Close-Notification-Warnung vom Client. Wenn Sie eine andere Herunterfahroption benötigen
 # Ansatz: Sie können eine der folgenden Variablen verwenden:
 # o ssl-unclean-shutdown:
 # Dies erzwingt ein unsauberes Herunterfahren, wenn die Verbindung geschlossen wird, d. h. kein
 # SSL-Benachrichtigung zum Schließen wird gesendet oder empfangen. Dies verstößt gegen
 # der SSL/TLS-Standard, wird aber für einige hirntote Browser benötigt. Verwenden Sie
 # dies, wenn Sie E/A-Fehler aufgrund des Standardansatzes erhalten, bei dem
 # mod_ssl sendet die Benachrichtigung zum Schließen.
 # o SSL-genaues Herunterfahren:
 # Dies erzwingt ein genaues Herunterfahren, wenn die Verbindung geschlossen wird, d. h. ein
 # SSL-Schließbenachrichtigung wird gesendet und mod_ssl wartet auf die Schließbenachrichtigung
 # Warnung des Clients. Dies ist 100% SSL/TLS-Standard-konform, aber in
 # Praxis führt oft zu hängenden Verbindungen mit hirntoten Browsern. Verwenden Sie
 # dies nur für Browser, bei denen Sie wissen, dass ihre SSL-Implementierung
 # funktioniert einwandfrei.
 # Hinweis: Die meisten Probleme defekter Clients hängen auch mit HTTP zusammen
 # Keep-Alive-Funktion, daher möchten Sie normalerweise zusätzlich deaktivieren
 # Keep-Alive auch für diese Clients. Verwenden Sie hierfür die Variable „nokeepalive“.
 # Ebenso muss man einige Clients zwingen, HTTP/1.0 zu verwenden, um
 # ihre defekte HTTP/1.1-Implementierung. Verwenden Sie die Variablen "downgrade-1.0" und
 # "force-response-1.0" hierfür.
 # BrowserMatch "MSIE [2-6]" \
 # nokeepalive ssl-unclean-shutdown \
 # Downgrade-1.0 Kraftantwort-1.0
 
 </VirtualHost>
</IfModule>
 
# vim: Syntax=Apache ts=4 sw=4 sts=4 sr noet

Haben Sie bemerkt, dass die Konfigurationselemente im Alibaba Cloud-Tutorial in zwei Konfigurationsdateien aufgeteilt sind?

Verwenden Sie dann https, um im Browser darauf zuzugreifen. Der Zugriff ist erfolgreich. (Linux kann zum Testen wget oder curl verwenden)

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Konfigurationsmethode für die Bereitstellung von Apache-, WSGI- und Django-Programmen
  • Detaillierte Erläuterung der Apache-Website-Dienstkonfiguration basierend auf Linux
  • Detaillierte Erläuterung der Konfigurationsmethode für den Lastenausgleich von Apache + Tomcat7 unter Windows
  • So konfigurieren Sie zwei oder mehr Sites mit dem Apache-Webserver
  • Installation, Aktivierung und Konfiguration von ModSecurity unter Apache
  • Tutorial zur Installation und Konfiguration des Apache-Webservers in CentOS 7
  • Alibaba Cloud Server Apache konfiguriert SSL-Zertifikate, um HTTPS erfolgreich zu aktivieren (verzeichnet verschiedene Fallstricke)
  • Lösung für den Fall, dass localhost nicht verfügbar ist, nachdem Apache unter Win10 den virtuellen Host konfiguriert hat
  • So konfigurieren Sie mehrere virtuelle Hosts lokal über Apache

<<:  Lösen Sie das Problem, dass das Element DateTimePicker+vue Popup-Box nur Stunden anzeigt

>>:  So sortieren Sie eine Zeile oder Spalte in MySQL

Artikel empfehlen

Einige Details zu Semikolons in JavaScript

Vorwort Semikolons sind in JavaScript optional un...

So implementieren Sie Hot Deployment und Hot Start in Eclipse/Tomcat

1. Hot Deployment: Das bedeutet, das gesamte Proj...

Detaillierte Erläuterung der Destrukturierungszuweisung von JS ES6-Variablen

Inhaltsverzeichnis 1. Was ist Dekonstruktion? 2. ...

Detailliertes Tutorial zur Installation der MySQL 8.0.20-Datenbank auf CentOS 7

Weiterführende Literatur: MySQL8.0.20-Installatio...

Über IE8-Kompatibilität: Erklärung des X-UA-Compatible-Attributs

Problembeschreibung: Code kopieren Der Code laute...

MySQL-Abfrageoptimierung: Eine Tabellenoptimierungslösung für 1 Million Daten

1. Abfragegeschwindigkeit von zwei Abfrage-Engine...

Lösung für die Baidu-Site-Suche, die https nicht unterstützt (getestet)

Seit kurzem ist https auch auf dem Handy möglich....

Detaillierte Erläuterung der Redis-Master-Slave-Replikationspraxis mit Docker

Inhaltsverzeichnis 1. Hintergrund 2. Bedienungssc...

So ändern Sie die Gruppe, zu der ein Benutzer in Linux gehört

Ändern Sie die Gruppe, zu der ein Benutzer in Lin...

Installieren Sie Ethereum/Ethereum von Grund auf unter CentOS7

Inhaltsverzeichnis Vorwort Fügen Sie Sudo-Schreib...

Zusammenfassung der neuen Verwendung von vi (vim) unter Linux

Ich benutze den vi-Editor seit mehreren Jahren, h...