Tutorial:SSL//TLSauf AL2 023 konfigurieren - Amazon Linux 2023

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tutorial:SSL//TLSauf AL2 023 konfigurieren

Secure Sockets Layer/Transport Layer Security (SSL/TLS) creates an encrypted channel between a web server and web client that protects data in transit from being eavesdropped on. This tutorial explains how to add support manually for SSL/TLS auf einer EC2 Instanz mit AL2 023 und Apache Webserver. In diesem Tutorial wird davon ausgegangen, dass Sie keinen Load Balancer verwenden. Wenn Sie Elastic Load Balancing verwenden, können Sie SSL Offload auf dem Load Balancer konfigurieren und stattdessen ein Zertifikat von AWS Certificate Managerverwenden.

Aus historischen Gründen wird Webverschlüsselung oft einfach als bezeichnet. SSL Webbrowser unterstützen zwar immer nochSSL, sein Nachfolgeprotokoll TLS ist jedoch weniger anfällig für Angriffe. AL2023 deaktiviert standardmäßig die serverseitige Unterstützung für alle Versionen vonSSL. Gremien für Sicherheitsstandards halten TLS 1.0 für unsicher. TLS1.0 und TLS 1.1 wurden im März 2021 offiziell als veraltet eingestuft. Dieses Tutorial enthält Anleitungen, die ausschließlich auf der Aktivierung TLS von 1.2 basieren. TLS1.3 wurde 2018 fertiggestellt und ist verfügbar, AL2 solange die zugrunde liegende TLS Bibliothek (SSLIn diesem Tutorial öffnen) unterstützt und aktiviert ist. Kunden müssen TLS 1.2 oder höher bis zum 28. Juni 2023 unterstützen. Weitere Informationen zu den aktualisierten Verschlüsselungsstandards finden Sie unter RFC7568 und RFC8446.

In diesem Tutorial wird moderne Webverschlüsselung einfach als bezeichnet. TLS

Wichtig

Diese Verfahren sind für die Verwendung mit AL2 023 vorgesehen. Wenn Sie versuchen, eine EC2 Instance einzurichten, auf der eine andere Distribution ausgeführt wird, oder eine Instance, auf der eine alte Version von Amazon Linux ausgeführt wird, funktionieren einige Verfahren in diesem Tutorial möglicherweise nicht. Informationen zu Ubuntu finden Sie in der folgenden Dokumentation der Ubuntu-Community: SSLAuf Ubuntu öffnen. Informationen zu Red Hat Enterprise Linux finden Sie unter: Den Apache HTTP Webserver einrichten. Andere Verteilungen finden Sie in der jeweiligen Dokumentation.

Anmerkung

Alternativ können Sie AWS Certificate Manager (ACM) für AWS Nitro-Enklaven verwenden. Dabei handelt es sich um eine Enklave-Anwendung, mit der Sie öffentliche und private SSL TLS /-Zertifikate für Ihre Webanwendungen und Server verwenden können, die auf EC2 Amazon-Instances mit Nitro Enclaves ausgeführt werden. AWS Nitro Enclaves ist eine EC2 Amazon-Funktion, die die Erstellung isolierter Computerumgebungen zum Schutz und zur sicheren Verarbeitung hochsensibler Daten wie SSL TLS /-Zertifikate und private Schlüssel ermöglicht.

ACMfor Nitro Enclaves arbeitet mit Nginx, das auf Ihrer Amazon EC2 Linux-Instance ausgeführt wird, um private Schlüssel zu erstellen, Zertifikate und private Schlüssel zu verteilen und Zertifikatserneuerungen zu verwalten.

Um ACM For Nitro Enclaves verwenden zu können, müssen Sie eine Enclave-fähige Linux-Instance verwenden.

Weitere Informationen finden Sie unter Was ist Nitro Enclaves? AWS und AWS Certificate Manager für Nitro Enclaves im Nitro Enclaves-Benutzerhandbuch.AWS

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, führen Sie die folgenden Schritte aus:

  • Starten Sie eine 023-Instanz mit -Unterstützung. EBS AL2 Weitere Informationen finden Sie unter AL2023 bei Amazon EC2.

  • Konfigurieren Sie Ihre Sicherheitsgruppen so, dass Ihre Instance Verbindungen über die folgenden TCP Ports akzeptiert:

    • SSH(Port 22)

    • HTTP(Anschluss 80)

    • HTTPS(Anschluss 443)

    Weitere Informationen finden Sie unter Autorisieren von eingehendem Datenverkehr für Ihre Linux-Instances im EC2Amazon-Benutzerhandbuch.

  • Installieren Sie den Apache-Webserver. step-by-stepAnweisungen finden Sie unter. Tutorial: Einen LAMP Server auf AL2 023 installieren Es werden nur das httpd-Paket und seine Abhängigkeiten benötigt, sodass Sie die Anweisungen ignorieren können, die MariaDB betreffenPHP.

  • Um Websites zu identifizieren und zu authentifizieren, stützt sich die TLS Public-Key-Infrastruktur (PKI) auf das Domain Name System (). DNS Um Ihre EC2 Instance zum Hosten einer öffentlichen Website zu verwenden, müssen Sie einen Domainnamen für Ihren Webserver registrieren oder einen vorhandenen Domainnamen auf Ihren EC2 Amazon-Host übertragen. Dafür stehen zahlreiche Domainregistrierungs- und DNS Hosting-Dienste von Drittanbietern zur Verfügung, oder Sie können Amazon Route 53 verwenden.

Schritt 1: TLS Auf dem Server aktivieren

Dieses Verfahren führt Sie durch den Prozess der Einrichtung von TLS on AL2 023 mit einem selbstsignierten digitalen Zertifikat.

Anmerkung

Ein selbstsigniertes Zertifikat kann zu Testzwecken, jedoch nicht für die Produktion verwendet werden. Wenn Sie Ihr selbstsigniertes Zertifikat im Internet bereitstellen, werden den Besuchern Ihrer Website Sicherheitswarnungen angezeigt.

Um es auf einem Server zu TLS aktivieren
  1. Verbinden Sie sich mit der Instance und stellen Sie sicher, dass Apache ausgeführt wird. Weitere Informationen finden Sie unter Verbindung zu 023 Instances herstellen AL2.

    [ec2-user ~]$ sudo systemctl is-enabled httpd

    Wenn der zurückgegebene Wert nicht „enabled“ (aktiviert) ist, starten Sie Apache und richten es so ein, dass es bei jedem Neustart des Systems gestartet wird.

    [ec2-user ~]$ sudo systemctl start httpd && sudo systemctl enable httpd
  2. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus. Dieser Vorgang kann einige Minuten dauern. Es ist jedoch wichtig, sicherzustellen, dass Sie über die aktuellen Sicherheitsaktualisierungen und Fehlerbehebungen verfügen.

    Anmerkung

    Mit der Option -y werden die Updates installiert, ohne um Bestätigung zu bitten. Wenn Sie die Aktualisierungen vor der Installation überprüfen möchten, können Sie diese Option auslassen.

    [ec2-user ~]$ sudo dnf install openssl mod_ssl
  3. Nachdem Sie den folgenden Befehl eingegeben haben, werden Sie zu einer Aufforderung weitergeleitet, in der Sie Informationen zu Ihrer Website eingeben können.

    [ec2-user ~]$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt

    Dadurch wird eine neue Datei apache-selfsigned.crt im Verzeichnis /etc/pki/tls/certs/ erstellt. Der angegebene Dateiname entspricht dem Standard, der in der SSLCertificateFile-Direktive in /etc/httpd/conf.d/ssl.conf zugewiesen ist.

    Ihre Instance verfügt nun über die folgenden Dateien, mit denen Sie Ihren sicheren Server konfigurieren und ein Zertifikat zum Testen erstellen:

    • /etc/httpd/conf.d/ssl.conf

      Die Konfigurationsdatei für mod_ssl. Es enthält Anweisungen, die Apache mitteilen, wo Verschlüsselungsschlüssel und Zertifikate zu finden sind, TLS welche Protokollversionen zulässig sind und welche Verschlüsselungschiffren akzeptiert werden sollen. Dies wird Ihre lokale Zertifikatdatei sein:

    • /etc/pki/tls/certs/apache-selfsigned.crt

    Die Datei enthält sowohl ein selbstsigniertes Zertifikat als auch den privaten Schlüssel des Zertifikats. Apache verlangt, dass das Zertifikat und der Schlüssel in einem PEM Format vorliegen, das aus Base64-kodierten ASCII Zeichen besteht, die von Zeilen "" und "BEGIN" umrahmt sind, wie im END folgenden abgekürzten Beispiel dargestellt.

    -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD2KKx/8Zk94m1q 3gQMZF9ZN66Ls19+3tHAgQ5Fpo9KJDhzLjOOCI8u1PTcGmAah5kEitCEc0wzmNeo BCl0wYR6G0rGaKtK9Dn7CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vr GvwnKoMh3DlK44D9dX7IDua2PlYx5+eroA+1Lqf32ZSaAO0bBIMIYTHigwbHMZoT ... 56tE7THvH7vOEf4/iUOsIrEzaMaJ0mqkmY1A70qQGQKBgBF3H1qNRNHuyMcPODFs 27hDzPDinrquSEvoZIggkDMlh2irTiipJ/GhkvTpoQlv0fK/VXw8vSgeaBuhwJvS LXU9HvYq0U6O4FgD3nAyB9hI0BE13r1HjUvbjT7moH+RhnNz6eqqdscCS09VtRAo 4QQvAqOa8UheYeoXLdWcHaLP -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vrGvwnKoMh3DlK44D9dlU3 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----

    Die Dateinamen und Erweiterungen dienen der Einfachheit und haben keinerlei Auswirkungen auf die Funktion. Sie können beispielsweise ein Zertifikat mit cert.crt, cert.pem oder einem beliebigen anderen Dateinamen benennen, solange die zugehörige Richtlinie in der Datei ssl.conf denselben Namen verwendet.

    Anmerkung

    Wenn Sie die TLS Standarddateien durch Ihre eigenen benutzerdefinierten Dateien ersetzen, stellen Sie sicher, dass sie das richtige Format haben. PEM

  4. Starten Sie Apache erneut.

    [ec2-user ~]$ sudo systemctl restart httpd
    Anmerkung

    Stellen Sie sicher, dass auf Ihrer EC2 Instance auf TCP Port 443 zugegriffen werden kann, wie zuvor beschrieben.

  5. Ihr Apache-Webserver sollte jetzt HTTPS (sicherHTTP) über Port 443 unterstützen. Testen Sie es, indem Sie die IP-Adresse oder den vollqualifizierten Domainnamen Ihrer EC2 Instanz in eine URL Browserleiste mit dem Präfix eingebenhttps://.

    Da Sie eine Verbindung mit einer Website mit einem selbstsignierten, nicht vertrauenswürdigen Host-Zertifikat herstellen, zeigt Ihr Browser möglicherweise eine Reihe von Sicherheitswarnungen an. Setzen Sie die Warnmeldungen außer Kraft und fahren Sie mit der Website fort.

    Wenn die Standard-Apache-Testseite geöffnet wird, bedeutet dies, dass Sie die Konfiguration TLS auf Ihrem Server erfolgreich abgeschlossen haben. Alle Daten, die zwischen dem Browser und dem Server übertragen werden, sind nun verschlüsselt.

    Anmerkung

    Damit den Besuchern keine Warnbildschirme angezeigt werden, müssen Sie ein vertrauenswürdiges, CA-signiertes Zertifikat abrufen, das nicht nur verschlüsselt, sondern Sie auch öffentlich als den Besitzer der Website authentifiziert.

Schritt 2: Abrufen eines CA-signierten Zertifikats

Sie können das folgende Verfahren verwenden, um ein CA-signiertes Zertifikat zu erhalten:

  • Generieren Sie eine Zertifikatsignieranforderung (CSR) aus einem privaten Schlüssel

  • Senden Sie das CSR an eine Zertifizierungsstelle (CA)

  • Sie erhalten ein signiertes Host-Zertifikat

  • Konfigurieren Sie Apache, um das Zertifikat zu verwenden

Ein selbstsigniertes TLS X.509-Hostzertifikat ist kryptologisch identisch mit einem CA-signierten Zertifikat. Der Unterschied liegt im sozialen, nicht im mathematischen Bereich. Eine CA validiert zumindest den Besitzer einer Domain, bevor ein Zertifikat für einen Antragsteller ausgegeben wird. Jeder Webbrowser enthält eine Liste von Websites, CAs denen der Browserhersteller zu diesem Zweck vertraut. Ein X.509-Zertifikat besteht hauptsächlich aus einem öffentlichen Schlüssel, der Ihrem privaten Serverschlüssel entspricht, sowie einer Signatur durch die CA, die kryptografisch an den öffentlichen Schlüssel gebunden ist. Wenn ein Browser eine Verbindung zu einem Webserver herstelltHTTPS, präsentiert der Server dem Browser ein Zertifikat, das er anhand seiner Liste vertrauenswürdiger Server überprüfen kannCAs. Wenn sich der Aussteller auf der Liste befindet oder über eine Vertrauenskette aus anderen vertrauenswürdigen Ausstellern zugänglich ist, handelt der Browser einen schnellen verschlüsselten Datenkanal mit dem Server aus und lädt die Seite.

Im Allgemeinen sind Zertifikate aufgrund der Arbeit im Zusammenhang mit der Validierung der Anforderungen kostenpflichtig, deshalb lohnt es sich, die Angebote zu vergleichen. Einige CAs bieten kostenlose Basiszertifikate an. Das bemerkenswerteste davon CAs ist das Let's Encrypt-Projekt, das auch die Automatisierung des Prozesses zur Erstellung und Verlängerung von Zertifikaten unterstützt. Weitere Informationen zur Verwendung eines Let's Encrypt-Zertifikats finden Sie unter Get Certbot.

Wenn Sie beabsichtigen, kommerzielle Dienstleistungen anzubieten, ist AWS Certificate Manager eine gute Option.

Dem Host-Zertifikat liegt der Schlüssel zugrunde. Ab 2019 empfehlen Regierungs - und Industriegruppen, bis 2030 eine Mindestschlüsselgröße (Modul) von 2048 Bit für RSA Schlüssel zum Schutz von Dokumenten zu verwenden. Die von Open SSL in AL2 023 generierte Standardmodulgröße beträgt 2048 Bit, was für die Verwendung in einem von einer Zertifizierungsstelle signierten Zertifikat geeignet ist. Im folgenden Verfahren ist ein optionaler Schritt für diejenigen vorgesehen, die einen benutzerdefinierten Schlüssel verwenden möchten, z.B. einen mit einem größeren Modul oder mit einem anderen Verschlüsselungsalgorithmus.

Wichtig

Diese Anweisungen zum Erwerb eines von einer Zertifizierungsstelle signierten Hostzertifikats funktionieren nur, wenn Sie eine registrierte und gehostete Domain besitzen. DNS

So rufen Sie ein CA-signierten Zertifikat ab
  1. Connect zu Ihrer Instance her und navigieren Sie zu to /etc/pki/tls/private /. Dies ist das Verzeichnis, für TLS das Sie den privaten Schlüssel des Servers speichern. Wenn Sie es vorziehen, einen vorhandenen Hostschlüssel zum Generieren des zu verwendenCSR, fahren Sie mit Schritt 3 fort. Weitere Informationen zum Herstellen einer Verbindung mit Ihrer Instance finden Sie unter Verbindung zu 023 Instances herstellen AL2

  2. (Optional) Generieren Sie einen neuen privaten Schlüssel. Hier sind einige Beispiele für Schlüsselkonfigurationen. Jeder der resultierenden Schlüssel funktioniert mit Ihrem Webserver, aber sie unterscheiden sich durch den Grad und die Art der Sicherheit, die sie implementieren.

    • Beispiel 1: Erstellen Sie einen RSA Standard-Hostschlüssel. Die resultierende Datei,custom.key, ist ein RSA privater 2048-Bit-Schlüssel.

      [ec2-user ~]$ sudo openssl genrsa -out custom.key
    • Beispiel 2: Erstellen Sie einen stärkeren RSA Schlüssel mit einem größeren Modul. Die resultierende Datei,custom.key, ist ein privater 4096-Bit-SchlüsselRSA.

      [ec2-user ~]$ sudo openssl genrsa -out custom.key 4096
    • Beispiel 3: Erstellen Sie einen 4096-Bit-verschlüsselten Schlüssel mit Passwortschutz. RSA Die resultierende Datei,, ist ein RSA privater 4096-Bit-Schlüsselcustom.key, der mit der -128-Chiffre verschlüsselt wurde. AES

      Wichtig

      Die Verschlüsselung des Schlüssels bietet höhere Sicherheit. Da für einen verschlüsselten Schlüssel ein Passwort erforderlich ist, können von diesem abhängige Services jedoch nicht automatisch gestartet werden. Jedes Mal, wenn Sie diesen Schlüssel verwenden, müssen Sie das Passwort (im vorherigen Beispiel „abcde12345") über eine Verbindung angeben. SSH

      [ec2-user ~]$ sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096
    • Beispiel 4: Erstellen Sie einen Schlüssel mit einer Nicht-Chiffre. RSA RSAKryptografie kann aufgrund der Größe ihrer öffentlichen Schlüssel, die auf dem Produkt zweier großer Primzahlen basieren, relativ langsam sein. Es ist jedoch möglich, Schlüssel für TLS diese Verwendung von RSA Nicht-Chiffren zu erstellen. Schlüssel, die auf der Mathematik von Ellipsenkurven basieren, sind kleiner und bieten eine schnellere Rechenleistung bei der Bereitstellung einer gleichwertigen Sicherheitsebene.

      [ec2-user ~]$ sudo openssl ecparam -name prime256v1 -out custom.key -genkey

      Das Ergebnis ist ein privater 256-Bit-Schlüssel mit elliptischer Kurve, der prime256v1 verwendet, eine „benannte Kurve“, die Open unterstützt. SSL Laut Angaben ist seine kryptografische Stärke etwas höher als die eines 2048-Bit-Schlüssels. RSA NIST

      Anmerkung

      Nicht alle CAs bieten das gleiche Maß an Unterstützung für elliptic-curve-based Schlüssel wie für Schlüssel. RSA

    Stellen Sie sicher, dass der neue private Schlüssel stark einschränkende Eigentümerschaft und Berechtigungen aufweist (Eigentümer=root, Gruppe=root, Lesen/Schreiben nur für Eigentümer). Führen Sie die Befehle wie im folgenden Beispiel veranschaulicht aus.

    [ec2-user ~]$ sudo chown root:root custom.key [ec2-user ~]$ sudo chmod 600 custom.key [ec2-user ~]$ ls -al custom.key

    Die vorhergehenden Befehle erzeugen das folgende Ergebnis.

    -rw------- root root custom.key

    Nachdem Sie einen zufriedenstellenden Schlüssel erstellt und konfiguriert haben, können Sie einen erstellenCSR.

  3. Erstellen Sie einen CSR mit Ihrem bevorzugten Schlüssel. Im folgenden Beispiel wird verwende custom.key.

    [ec2-user ~]$ sudo openssl req -new -key custom.key -out csr.pem

    Öffnen SSL öffnet ein Dialogfeld und fordert Sie auf, die in der folgenden Tabelle aufgeführten Informationen einzugeben. Alle Felder außer Common Name (Allgemeiner Name) sind bei einem grundlegenden, Domain-validierten Host-Zertifikat optional.

    Name Beschreibung Beispiel
    Ländername Die zweibuchstabige ISO Abkürzung für Ihr Land. US (=United States, Vereinigte Staaten)
    State or Province Name Der Name des Bundesstaats oder der Provinz, in dem bzw. der sich Ihre Organisation befindet. Dieser Name darf nicht abgekürzt werden. Washington
    Locality Name Der Standort Ihrer Organisation, wie beispielsweise eine Stadt. Seattle
    Name der Organisation Der vollständige, offizielle Name Ihrer Organisation. Kürzen Sie den Namen Ihrer Organisation nicht ab. Beispielunternehmen
    Organizational Unit Name Zusätzliche Informationen zu Ihrer Organisation, sofern vorhanden. Beispielabteilung
    Common Name

    Dieser Wert muss genau der Webadresse entsprechen, die Ihre Benutzer in einen Browser eingeben sollen. Dies ist in der Regel ein Domain-Name mit einem vorangestellten Hostnamen oder Alias in der Form www.example.com. Beim Testen mit einem selbstsignierten Zertifikat und ohne DNS Auflösung kann der allgemeine Name nur aus dem Hostnamen bestehen. CAsbieten auch teurere Zertifikate an, die Platzhalternamen akzeptieren, wie z. *.example.com

    www.example.com
    Email Address Die E-Mail-Adresse des Serveradministrators. someone@example.com

    Schließlich fordert Sie Open SSL zur Eingabe eines optionalen Challenge-Passworts auf. Dieses Passwort gilt nur für CSR und für Transaktionen zwischen Ihnen und Ihrer CA. Folgen Sie daher den Empfehlungen der CA zu diesem und dem anderen optionalen Feld, dem optionalen Firmennamen. Das CSR Challenge-Passwort hat keine Auswirkung auf den Serverbetrieb.

    Die erstellte Datei csr.pem enthält Ihren öffentlichen Schlüssel, die digitale Signatur Ihres öffentlichen Schlüssels und die von Ihnen eingegebenen Metadaten.

  4. Reichen Sie das CSR bei einer Zertifizierungsstelle ein. Dies besteht normalerweise darin, Ihre CSR Datei in einem Texteditor zu öffnen und den Inhalt in ein Webformular zu kopieren. Zu diesem Zeitpunkt werden Sie möglicherweise aufgefordert, einen oder mehrere alternative Namen (SANs) für das Zertifikat anzugeben. Wenn www.example.com es der gebräuchliche Name ist, dann example.com wäre SAN es gut und umgekehrt. Ein Besucher Ihrer Website, der einen dieser Namen eingibt, wird eine fehlerfreie Verbindung sehen. Wenn Ihr CA-Webformular dies zulässt, nehmen Sie den allgemeinen Namen in die Liste von aufSANs. Manche CAs schließen ihn automatisch ein.

    Nachdem Ihre Anfrage genehmigt wurde, erhalten Sie ein neues, von der CA unterzeichnetes Host-Zertifikat. Möglicherweise werden Sie auch dazu aufgefordert, eine Zwischenzertifikatsdatei herunterzuladen, die zusätzliche Zertifikate enthält, welche zum Fertigstellen der Vertrauenskette der CA benötigt werden.

    Anmerkung

    Ihre CA kann Ihnen Dateien in verschiedenen Formaten für verschiedene Zwecke zusenden. Für dieses Tutorial sollten Sie nur eine Zertifikatsdatei in einem PEM Format verwenden, das normalerweise (aber nicht immer) mit der .crt Dateierweiterung .pem OR gekennzeichnet ist. Wenn Sie sich nicht sicher sind, welche Datei Sie verwenden sollen, öffnen Sie die Dateien mit einem Texteditor und suchen Sie die Datei, die einen oder mehrere Blöcke enthält, die mit der folgenden Zeile beginnen.

    - - - - -BEGIN CERTIFICATE - - - - -

    Die Datei sollte darüber hinaus mit der folgenden Zeile enden.

    - - - -END CERTIFICATE - - - - -

    Sie können die Datei auch in der Befehlszeile testen, wie im Folgenden gezeigt.

    [ec2-user certs]$ openssl x509 -in certificate.crt -text

    Vergewissern Sie sich, dass diese Zeilen in der Datei erscheinen. Verwenden Sie keine Dateien, die mit .p7b, .p7c oder ähnlichen Dateiendungen enden.

  5. Platzieren Sie ein neues CA-signiertes Zertifikat und alle Zwischenzertifikate im /etc/pki/tls/certs-Verzeichnis.

    Anmerkung

    Es gibt mehrere Möglichkeiten, Ihr neues Zertifikat auf Ihre EC2 Instanz hochzuladen. Die einfachste und informativste Methode besteht jedoch darin, einen Texteditor (z. B. vi, nano oder Notepad) sowohl auf Ihrem lokalen Computer als auch auf Ihrer Instanz zu öffnen und dann den Dateiinhalt zwischen den Instanzen zu kopieren und einzufügen. Sie benötigen Root-Rechte [sudo], wenn Sie diese Operationen auf der EC2 Instanz ausführen möchten. Auf diese Weise können Sie sofort erkennen, ob es Probleme mit Berechtigungen oder mit dem Pfad gibt. Achten Sie jedoch darauf, beim Kopieren der Inhalte keine zusätzlichen Zeilen einzufügen und die Inhalte nicht zu ändern.

    Überprüfen Sie innerhalb des /etc/pki/tls/certs Verzeichnisses, ob die Einstellungen für Dateibesitz, Gruppen und Berechtigungen den stark restriktiven AL2 023-Standardwerten entsprechen (owner=root, group=root, read/write nur für Besitzer). Das folgende Beispiel zeigt die zu verwendenden Befehle.

    [ec2-user certs]$ sudo chown root:root custom.crt [ec2-user certs]$ sudo chmod 600 custom.crt [ec2-user certs]$ ls -al custom.crt

    Diese Befehle sollten das folgende Ergebnis hervorrufen.

    -rw------- root root custom.crt

    Die Berechtigungen für die Zwischenzertifikatsdatei sind weniger strikt (Eigentümer=root, Gruppe=root, Eigentümer kann schreiben, Gruppe kann lesen, die restliche Welt kann lesen). Das folgende Beispiel zeigt die zu verwendenden Befehle.

    [ec2-user certs]$ sudo chown root:root intermediate.crt [ec2-user certs]$ sudo chmod 644 intermediate.crt [ec2-user certs]$ ls -al intermediate.crt

    Diese Befehle sollten das folgende Ergebnis hervorrufen.

    -rw-r--r-- root root intermediate.crt
  6. Platzieren Sie den privaten Schlüssel, mit dem Sie den erstellt haben, in das Verzeichnis. CSR /etc/pki/tls/private/

    Anmerkung

    Es gibt mehrere Möglichkeiten, Ihren benutzerdefinierten Schlüssel auf Ihre EC2 Instance hochzuladen. Die einfachste und informativste Methode besteht jedoch darin, einen Texteditor (z. B. vi, nano oder Notepad) sowohl auf Ihrem lokalen Computer als auch auf Ihrer Instanz zu öffnen und dann den Dateiinhalt zwischen diesen zu kopieren und einzufügen. Sie benötigen Root-Rechte [sudo], wenn Sie diese Operationen auf der EC2 Instanz ausführen möchten. Auf diese Weise können Sie sofort erkennen, ob es Probleme mit Berechtigungen oder mit dem Pfad gibt. Achten Sie jedoch darauf, beim Kopieren der Inhalte keine zusätzlichen Zeilen einzufügen und die Inhalte nicht zu ändern.

    Verwenden Sie innerhalb des /etc/pki/tls/private Verzeichnisses die folgenden Befehle, um zu überprüfen, ob die Einstellungen für Dateibesitz, Gruppen und Berechtigungen den stark restriktiven AL2 023-Standardeinstellungen entsprechen (owner=root, group=root, read/write nur für Besitzer).

    [ec2-user private]$ sudo chown root:root custom.key [ec2-user private]$ sudo chmod 600 custom.key [ec2-user private]$ ls -al custom.key

    Diese Befehle sollten das folgende Ergebnis hervorrufen.

    -rw------- root root custom.key
  7. Bearbeiten Sie die Datei /etc/httpd/conf.d/ssl.conf so, dass sie Ihr neues Zertifikat und Ihre Schlüsseldateien widerspiegelt.

    1. Geben Sie den Pfad und Dateinamen des CA-signierten Host-Zertifikats im SSLCertificateFile-Verzeichnis von Apache an.

      SSLCertificateFile /etc/pki/tls/certs/custom.crt
    2. Wenn Sie eine Zwischenzertifikatsdatei erhalten haben (intermediate.crt in diesem Beispiel), stellen Sie den entsprechenden Pfad und Dateinamen über das SSLCACertificateFile-Verzeichnis in Apache bereit:

      SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
      Anmerkung

      Manche CAs kombinieren das Host-Zertifikat und die Zwischenzertifikate in einer einzigen Datei, sodass die Direktive überflüssig wird. SSLCACertificateFile Informieren Sie sich in den von Ihrer CA bereitgestellten Anweisungen.

    3. Geben Sie den Pfad und Dateinamen des privaten Schlüssels (in diesem Beispiel custom.key) in der SSLCertificateKeyFile-Direktive von Apache an:

      SSLCertificateKeyFile /etc/pki/tls/private/custom.key
  8. Speichern Sie /etc/httpd/conf.d/ssl.conf und starten Sie Apache erneut.

    [ec2-user ~]$ sudo systemctl restart httpd
  9. Testen Sie Ihren Server, indem Sie Ihren Domainnamen mit dem Präfix in eine URL Browserleiste eingebenhttps://. Ihr Browser sollte die Testseite erneut laden, HTTPS ohne dass Fehler auftreten.

Schritt 3: Testen und Verstärken der Sicherheitskonfiguration

Sobald Ihr TLS System betriebsbereit und der Öffentlichkeit zugänglich ist, sollten Sie testen, wie sicher es wirklich ist. Mit Online-Diensten wie Qualys SSL Labs, die eine kostenlose und gründliche Analyse Ihrer Sicherheitseinstellungen durchführen, ist das ganz einfach. Basierend auf den Ergebnissen entscheiden Sie sich möglicherweise dafür, die Standard-Sicherheitskonfiguration zu verstärken, indem Sie kontrollieren, welche Protokolle akzeptiert werden sollen, welche Chiffren Sie bevorzugen und welche ausgeschlossen werden soll. Um weitere Informationen zu erhalten, sehen Sie sich an, wie Qualys seine Skalen gestaltet.

Wichtig

Reale Tests sind außerordentlich wichtig für die Sicherheit Ihres Servers. Kleine Konfigurationsfehler führen möglicherweise zu ernsten Sicherheitsverstößen und Datenverlusten. Da sich die empfohlenen Sicherheitsmaßnahmen aufgrund von Forschungen und neuartigen Bedrohungen ständig ändern, sind regelmäßige Sicherheitsprüfungen wichtig für eine gute Serveradministration.

Geben Sie auf der Qualys SSL Labs-Website den vollqualifizierten Domainnamen Ihres Servers in das Formular ein. www.example.com Nach ungefähr zwei Minuten erhalten Sie eine Note (von A bis F) für Ihre Website sowie eine detaillierte Auflistung der Ergebnisse. In der folgenden Tabelle wird der Bericht für eine Domain zusammengefasst, deren Einstellungen mit der Apache-Standardkonfiguration auf AL2 023 identisch sind und die über ein Certbot-Standardzertifikat verfügt.

Gesamtbewertung B
Zertifikat 100 %
Protokollunterstützung 95 %
Schlüsselaustausch 70 %
Chiffrestärke 90 %

Obwohl die Übersicht zeigt, dass die Konfiguration größtenteils intakt ist, zeigt der detaillierte Bericht einige potenzielle Probleme, die hier nach Schweregrad geordnet aufgelistet werden:

Die RC4 Chiffre wird für die Verwendung durch bestimmte ältere Browser unterstützt. Eine Chiffre ist der mathematische Kern eines Verschlüsselungsalgorithmus. RC4, eine schnelle Chiffre, die zur Verschlüsselung von TLS Datenströmen verwendet wird, weist bekanntermaßen mehrere schwerwiegende Schwächen auf. Wenn Sie nicht sehr gute Gründe haben, veraltete Browser zu unterstützen, sollten Sie dies deaktivieren.

Alte TLS Versionen werden unterstützt. Die Konfiguration unterstützt TLS 1.0 (bereits veraltet) und TLS 1.1 (derzeit veraltet). Seit 2018 wurde nur TLS 1.2 empfohlen.

Forward Secrecy wird nicht vollständig unterstützt. Forward Secrecy ist ein Feature von Algorithmen zur Verschlüsselung mit temporären (flüchtigen) Sitzungsschlüsseln, die von dem privaten Schlüssel abgeleitet werden. In der Praxis bedeutet das, dass Angreifer keine HTTPS Daten entschlüsseln können, selbst wenn sie den langfristigen privaten Schlüssel eines Webservers besitzen.

Um die Konfiguration zu korrigieren und zukunftssicher zu machen TLS
  1. Öffnen Sie die Konfigurationsdatei /etc/httpd/conf.d/ssl.conf in einem Texteditor und kommentieren Sie die folgende Zeile aus, indem Sie „#“ am Anfang der Zeile eingeben.

    #SSLProtocol all -SSLv3
  2. Fügen Sie die folgende Richtlinie hinzu:

    #SSLProtocol all -SSLv3 SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2

    Diese Direktive deaktiviert ausdrücklich die SSL Versionen 2 und 3 sowie die TLS Versionen 1.0 und 1.1. Der Server lehnt es jetzt ab, verschlüsselte Verbindungen mit Clients zu akzeptieren, die etwas anderes als TLS 1.2 verwenden. Der Verbose-Wortlaut in der Richtlinie teilt einem menschlichen Leser genauer mit, wofür der Server konfiguriert ist.

    Anmerkung

    Wenn Sie die TLS Versionen 1.0 und 1.1 auf diese Weise deaktivieren, wird ein kleiner Prozentsatz veralteter Webbrowser daran gehindert, auf Ihre Website zuzugreifen.

So ändern Sie die Liste der zulässigen Chiffren
  1. Suchen Sie in der Konfigurationsdatei /etc/httpd/conf.d/ssl.conf den Abschnitt mit der SSLCipherSuite-Richtlinie und kommentieren Sie die bestehende Zeile aus, indem Sie „#“ am Anfang der Zeile eingeben.

    #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  2. Geben Sie explizite Verschlüsselungssammlungen und eine Verschlüsselungsreihenfolge an, die Forward Secrecy unterstützt und unsichere Verschlüsselungen vermeidet. Die hier verwendete SSLCipherSuite Direktive basiert auf der Ausgabe des Mozilla SSL Configuration Generators, der eine TLS Konfiguration an die spezifische Software anpasst, die auf Ihrem Server ausgeführt wird. Ermitteln Sie zunächst Ihre Apache- und SSL Open-Versionen, indem Sie die Ausgabe der folgenden Befehle verwenden.

    [ec2-user ~]$ yum list installed | grep httpd [ec2-user ~]$ yum list installed | grep openssl

    Wenn die zurückgegebenen Informationen beispielsweise Apache 2.4.34 und Open SSL 1.0.2 sind, geben wir diese in den Generator ein. Wenn Sie das „moderne“ Kompatibilitätsmodell auswählen, wird dadurch eine SSLCipherSuite-Richtlinie erstellt, die die Sicherheit aggressiv durchsetzt, aber dennoch für die meisten Browser funktioniert. Wenn die Modemkonfiguration von der Software nicht unterstützt wird, können Sie Ihre Software aktualisieren oder stattdessen die „fortgeschrittene“ Konfiguration wählen.

    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

    Die ausgewählten Chiffren haben ECDHEin ihren Namen eine Abkürzung für Elliptic Curve Diffie-Hellman Ephemeral. Der Begriff Ephemeralität (Flüchtigkeit) gibt die "Forward Secrecy (Folgenlosigkeit)" an. Als Nebenprodukt werden diese Chiffren nicht unterstützt. RC4

    Wir empfehlen, eine explizite Liste von Chiffren zu verwenden, anstatt sich auf Standardeinstellungen oder knappe Richtlinien zu verlassen, deren Inhalt nicht sichtbar ist.

    Kopieren Sie die erzeugte Richtlinie in /etc/httpd/conf.d/ssl.conf.

    Anmerkung

    Obwohl dies hier zur besseren Lesbarkeit auf mehrere Zeilen verteilt ist, muss die Richtlinie in einer einzelnen Zeile mit nur einem Doppelpunkt (ohne Leerstellen) aufgeführt werden, wenn sie nach /etc/httpd/conf.d/ssl.conf kopiert wird.

  3. Entfernen Sie schließlich die Kommentarzeichen in der folgende Zeile, indem Sie das „#“ am Anfang der Zeile löschen.

    #SSLHonorCipherOrder on

    Diese Richtlinie zwingt den Server, hochrangige Chiffren zu bevorzugen, einschließlich derjenigen (in diesem Fall), die Forward Secrecy unterstützen. Wenn diese Richtlinie aktiviert ist, versucht der Server, eine hochgradig sichere Verbindung herzustellen, bevor er auf Chiffren mit geringerer Sicherheit zurückgreift.

Nach Abschluss dieser beiden Verfahren speichern Sie die Änderungen in /etc/httpd/conf.d/ssl.conf und starten Sie Apache neu.

Wenn Sie die Domain erneut auf Qualys SSL Labs testen, sollten Sie feststellen, dass die RC4 Sicherheitslücke und andere Warnungen nicht mehr vorhanden sind und die Zusammenfassung etwa wie folgt aussieht.

Gesamtbewertung A
Zertifikat 100 %
Protokollunterstützung 100 %
Schlüsselaustausch 90 %
Chiffrestärke 90 %

Jedes Update von Open SSL führt neue Chiffren ein und entfernt die Unterstützung für alte. Behalten Sie Ihre EC2 AL2 023-Instanz bei up-to-date, achten Sie auf Sicherheitsankündigungen von Open SSL und achten Sie auf Berichte über neue Sicherheitslücken in der Fachpresse.

Fehlerbehebung

  • Mein Apache-Webserver startet erst, wenn ich ein Passwort eingebe

    Dieses Verhalten wird erwartet, wenn Sie einen verschlüsselten, passwortgeschützten privaten Serverschlüssel installiert haben.

    Sie können die Verschlüsselungs- und Passwortanforderung vom Schlüssel entfernen. Angenommen, Sie haben einen privaten verschlüsselten RSA Schlüssel, der custom.key im Standardverzeichnis aufgerufen wird, und das zugehörige Passwort lautetabcde12345, führen Sie die folgenden Befehle auf Ihrer EC2 Instance aus, um eine unverschlüsselte Version des Schlüssels zu generieren.

    [ec2-user ~]$ cd /etc/pki/tls/private/ [ec2-user private]$ sudo cp custom.key custom.key.bak [ec2-user private]$ sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt [ec2-user private]$ sudo mv custom.key.nocrypt custom.key [ec2-user private]$ sudo chown root:root custom.key [ec2-user private]$ sudo chmod 600 custom.key [ec2-user private]$ sudo systemctl restart httpd

    Apache sollte jetzt starten, ohne Sie zur Eingabe eines Passworts aufzufordern.

  • Ich erhalte Fehlermeldungen, wenn ich „sudo dnf install -y mod_ssl“ ausführe.

    Bei der Installation der erforderlichen Pakete für SSL werden möglicherweise Fehler ähnlich den folgenden angezeigt.

    Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64 Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64

    Das bedeutet in der Regel, dass auf Ihrer EC2 Instance AL2 023 nicht ausgeführt wird. Dieses Tutorial unterstützt nur Instanzen, die frisch von einer offiziellen Version AL2 AMI 023 aus erstellt wurden.