Blog

AWS-Leitfaden: Hosten interner statischer Websites mit HTTPS unter Verwendung von S3 und Application Load Balancer

Bild von Yordan Todorov
Yordan Todorov
DevOps und Cloud-Engineer
13.11.2024
Lesezeit: 6 Minuten.
Zuletzt aktualisiert: 09.10.2025

Inhaltsübersicht

In einer Zeit, in der die Sicherheit im Web an erster Stelle steht, ist das Hosten statischer Websites mit HTTPS unerlässlich, insbesondere für interne Benutzer. Dieser Blog führt Sie durch die Einrichtung einer internen statischen HTTPS-Website mit Amazon S3, einem Application Load Balancer (ALB) und AWS PrivateLink. Am Ende dieses Beitrags werden Sie verstehen, wie Sie eine sichere und effiziente Infrastruktur für den internen Zugriff erstellen können.

Die Architektur verwendet eine interne ALB, um die TLS-Terminierung für einen Amazon S3-Bucket zu verwalten. Mit dieser Konfiguration können Benutzer innerhalb eines privaten Netzwerks sicher auf die statische Website zugreifen, indem sie AWS Certificate Manager (ACM) für die Verwaltung von SSL/TLS-Zertifikaten nutzen.

Das folgende Diagramm veranschaulicht die Architektur:

aws

  1. Amazon S3: Speichert den statischen Inhalt der Website
  2. Application Load Balancer (ALB): Verarbeitet eingehende HTTPS-Anfragen und leitet sie an den S3-Bucket weiter
  3. AWS PrivateLink: Ermöglicht private Konnektivität zwischen VPCs und AWS-Services, ohne den Datenverkehr dem öffentlichen Internet auszusetzen

Bevor Sie beginnen, vergewissern Sie sich, dass Sie alles haben:

  • Ein aktives AWS-Konto
  • Ein VPC mit privaten Subnetzen
  1. Navigieren Sie zu AWS Certificate Manager: Melden Sie sich bei der AWS Management Console an und öffnen Sie den AWS Certificate Manager (ACM).
  2. Ein neues Zertifikat anfordern: Klicken Sie auf Zertifikat anfordern, wählen Sie ein öffentliches Zertifikat anfordern und klicken Sie auf Weiter
  3. Domain-Namen angeben:
    • Geben Sie den Domänennamen ein (z. B. portal.example.com)
    • Optional können Sie alternative Namen hinzufügen (z. B. www.portal.example.com)
  4. Wählen Sie Validierungsmethode: Wählen Sie DNS-Validierung und klicken Sie auf Weiter
  5. Tags hinzufügen (fakultativ):
    • Fügen Sie Tags hinzu, um die Verwaltung Ihrer Ressourcen zu erleichtern, aber dieser Schritt ist optional. Weiter klicken
  6. Überprüfen und beantragen: Überprüfen Sie die Informationen und klicken Sie auf Bestätigen und beantragen.
  7. Validierung der Domäneneigentümerschaft:
    • Nach der Beantragung des Zertifikats stellt ACM CNAME-Einträge zur Verfügung, die Sie zu Ihrer DNS-Konfiguration hinzufügen müssen
    • Öffnen Sie die Route 53-Konsole, navigieren Sie zu Ihrer gehosteten Zone, und erstellen Sie die bereitgestellten CNAME-Einträge, um Ihren Besitz der Domain zu bestätigen
  8. Warten auf Validierung:
    • Sobald das Zertifikat validiert ist, wird es ausgestellt. In ACM wird der Status auf Ausgestellt geändert.
  1. Ein neues S3 Bucket erstellen:
    • Gehen Sie zur S3-Konsole
    • Klicken Sie auf Eimer erstellen
    • Geben Sie einen eindeutigen Bucket-Namen an (er muss nicht mit Ihrer Domain übereinstimmen)
    • Wählen Sie die AWS-Region für Ihren Bucket
    • Erstellen Sie den Bucket mit den Standardberechtigungseinstellungen
  2. Hochladen statischer Website-Dateien:
    • Nach der Erstellung des Buckets öffnen Sie ihn
    • Klicken Sie auf Hochladen und ziehen Sie Ihre statischen Website-Dateien (z. B. index.html, style.css usw.) in das Upload-Fenster.
Erstellen Sie einen neuen Endpunkt: Klicken Sie auf Endpunkt erstellen und wählen Sie als Servicekategorie AWS-Services aus. Geben Sie in das Suchfeld für den Servicenamen com.amazonaws.[region].s3 ein (ersetzen Sie [region] durch Ihre AWS-Region).
  1. Öffnen Sie das VPC Dashboard: Gehen Sie zur VPC-Konsole und klicken Sie auf Endpunkte.
  2. Einen neuen Endpunkt erstellen:
    • Klicken Sie auf Endpunkt erstellen.
    • Wählen Sie als Servicekategorie AWS-Services
    • Geben Sie in das Suchfeld für den Dienstnamen com.amazonaws.[region].s3 ein (ersetzen Sie [region] durch Ihre AWS-Region)
  3. Endpunkteinstellungen konfigurieren:
    • Wählen Sie die VPC, in der sich Ihr ALB befindet
    • Wählen Sie den Endpunkttyp Schnittstelle
    • Wählen Sie die Availability Zones (AZs), in denen sich Ihre privaten Subnetze befinden, und wählen Sie diese privaten Subnetze aus
  4. Sicherheitsgruppe für den Endpunkt festlegen:
    • Erstellen Sie eine neue Sicherheitsgruppe oder verwenden Sie eine vorhandene Gruppe für den VPC-Endpunkt. Die Sicherheitsgruppe sollte eingehenden Verkehr von der Sicherheitsgruppe Ihres ALB zulassen
    • Regeln für den Eingang:
      • Typ: HTTPS
      • Protokoll: TCP
      • Port-Bereich: 443
      • Quelle: Die Sicherheitsgruppe Ihres ALB
  5. Endpunkt-Richtlinie festlegen:
    • Für die Endpunktrichtlinie können Sie eine Richtlinie verwenden, die Ihrem ALB einen sicheren Zugriff auf den S3-Bucket ermöglicht. Ein Beispiel für eine Richtlinie wäre:
{
  "Version": "2012-10-17",

   "Statement": [

      {

         "Effect": "Allow",

         "Principal": "*",

         "Action": "s3:GetObject",

         "Resource": "arn:aws:s3:::yourbucketname/*"

      }

   ]

}
  1. Erstellen Sie den Endpunkt: Überprüfen Sie Ihre Konfigurationen und klicken Sie auf Endpunkt erstellen
  1. Einen neuen Load Balancer erstellen:
    • Navigieren Sie zum EC2 Dashboard und wählen Sie unter dem Abschnitt Load Balancing die Option Load Balancers
    • Klicken Sie auf Load Balancer erstellen und wählen Sie Application Load Balancer
  2. Grundlegende Konfiguration:
    • Wählen Sie als Load Balancer-Typ Internal
    • Geben Sie ihm einen Namen (z. B. intern-alb)
    • Wählen Sie den VPC und die privaten Teilnetze, in denen der ALB verfügbar sein soll
  3. Konfigurieren von Listenern und Sicherheitsgruppen:
    • Hinzufügen eines Listeners für HTTPS auf Port 443
    • Wählen Sie das SSL-Zertifikat, das Sie von ACM erhalten haben
    • Erstellen oder wählen Sie eine Sicherheitsgruppe, die eingehenden Datenverkehr über Port 443 aus Ihrem internen Netzwerk zulässt.
    • Regeln für den Eingang für die ALB-Sicherheitsgruppe:
      • Typ: HTTPS
      • Protokoll: TCP
      • Anschluss: 443
      • Quelle: CIDR-Bereich Ihres internen Netzwerks (z. B. 10.0.0.0/16).
  4. Zielgruppen konfigurieren:
    • Klicken Sie auf Eine neue Zielgruppe erstellen
    • Zieltyp auf IP einstellen
    • Protokoll auf HTTPS einstellen
Grundkonfiguration amazon EC2 Auto Scaling
  • Benennen Sie die Zielgruppe (z. B. s3-target-group)
  • Für registrierte Ziele registrieren Sie die IP-Adressen (pt.5) der Elastic Network Interfaces (ENIs), die für Ihren VPC-Endpunkt erstellt wurden
  • Verwenden Sie das HTTP-Protokoll für die Gesundheitsprüfungen. Vergewissern Sie sich unter "Erweiterte Health Check-Einstellungen", dass der Port Override auf 80 gesetzt ist, um dem HTTP-Protokoll zu entsprechen
  • ALB-Zustandsprüfungen Host-Header enthalten keinen Domänennamen, so dass S3 einen HTTP-Antwortcode ungleich 200 zurückgibt. Fügen Sie "307,405" zu den Erfolgscodes der Zustandsprüfung hinzu

  1. Beschaffung der IP-Adressen für die Zielgruppe:
    • Gehen Sie in der VPC-Konsole zum Abschnitt Endpunkte
    • Wählen Sie Ihren S3-Endpunkt
    • Auf der Registerkarte " Netzwerkschnittstellen" werden die ENIs für jedes Teilnetz aufgeführt
    • Notieren Sie sich die privaten IP-Adressen dieser ENIs, da sie in der Zielgruppe verwendet werden
  2. Ziele registrieren:
    • Fügen Sie in der Zielgruppenkonfiguration die privaten IP-Adressen der ENIs hinzu, die Sie zuvor notiert haben
    • Klicken Sie auf Erstellen
  3. Überprüfen und Erstellen:
    • Überprüfen Sie Ihre Einstellungen und klicken Sie auf Erstellen, um die ALB zu starten.

So beschränken Sie den Zugriff auf Ihren S3-Bucket:

  1. Navigieren Sie zur Registerkarte "Berechtigungen:
    • Gehen Sie zurück zur S3-Konsole und öffnen Sie Ihren Bucket
    • Klicken Sie auf die Registerkarte " Berechtigungen
  2. Bucket-Richtlinie bearbeiten:
    • Klicken Sie auf Bucket Policy und fügen Sie die folgende Richtlinie hinzu, wobei Sie yourbucketname und vpce-xxxxxxxxx durch Ihren tatsächlichen Bucketnamen und die VPC-Endpunkt-ID ersetzen:
{

   "Version": "2012-10-17",

   "Statement": [

      {

         "Sid": "AllowVPCEndpoint",

         "Effect": "Allow",

         "Principal": "*",

         "Action": "s3:GetObject",

         "Resource": [

            "arn:aws:s3:::yourbucketname",

            "arn:aws:s3:::yourbucketname/*"

         ],

         "Condition": {

            "StringEquals": {

               "aws:SourceVpce": "vpce-xxxxxxxxx"

            }

         }

      }

   ]

}
  1. Änderungen speichern: Klicken Sie auf Änderungen speichern, um die Richtlinie anzuwenden.

Verwenden Sie Route 53, um eine private gehostete Zone zu erstellen, und konfigurieren Sie die DNS-Einträge so, dass sie auf Ihren internen ALB verweisen:

  1. Route 53 öffnen:
    • Rufen Sie die Route 53-Konsole auf und klicken Sie auf Hosted Zones
  2. Erstellen einer privaten gehosteten Zone:
    • Klicken Sie auf Gehostete Zone erstellen
    • Private Hosted Zone für Amazon VPC auswählen
    • Geben Sie Ihren Domänennamen ein (z. B. example.com) und verknüpfen Sie ihn mit Ihrer VPC
    • Klicken Sie auf Gehostete Zone erstellen
  3. DNS-Einträge erstellen:
    • Klicken Sie auf die erstellte gehostete Zone
    • Klicken Sie auf Datensatz erstellen
    • Wählen Sie als Datensatztyp A - IPv4-Adresse
    • Wählen Sie für Alias die Option Ja, und wählen Sie dann die ALB aus der Dropdown-Liste Alias-Ziel
    • Setzen Sie den Namen auf die gewünschte Subdomäne (z. B. portal.example.com)
    • Klicken Sie auf Datensätze erstellen

Um die Einrichtung von einer EC2-Instanz innerhalb der VPC zu testen:

  1. Starten einer EC2-Instanz:
    • Starten Sie eine EC2-Instanz in derselben VPC und demselben privaten Teilnetz wie der ALB
    • SSH oder Session Manager verwenden
  2. Zugriff auf die statische Website:
    • Verwenden Sie einen Browser oder einen curl-Befehl, um die statische Website über die interne Domain (z. B. https://portal.example.com) aufzurufen.
    • Sie sollten sehen, dass Ihr statischer Inhalt über HTTPS bereitgestellt wird.

Mit diesen Schritten haben Sie erfolgreich eine sichere interne statische Website eingerichtet, die auf AWS mit S3, einem internen ALB und PrivateLink gehostet wird. Mit dieser Einrichtung können interne Benutzer sicher über HTTPS auf die Website zugreifen und gleichzeitig sicherstellen, dass der Datenverkehr nicht über das öffentliche Internet läuft.

Eine Antwort hinterlassen

Mehr Beiträge

Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.