Wie Nginx HSTS konfiguriert

王林
Freigeben: 2023-05-14 16:37:18
nach vorne
1941 Leute haben es durchsucht

Netcraft veröffentlichte kürzlich seine Studie zum Testen von SSL/TLS-Websites und stellte fest, dass nur 5 % der Benutzer HTTP Strict Transport Security HSTS korrekt implementierten.

Was ist HSTS? , modifizieren und fälschen. Wenn der Benutzer manuell einen Domänennamen oder einen http://-Link eingibt, erfolgt die erste Anfrage an die Website unverschlüsselt und verwendet einfaches HTTP. Die sichersten Websites senden sofort eine Weiterleitung zurück, die den Benutzer zu einer https-Verbindung weiterleitet. Ein Man-in-the-Middle-Angreifer kann jedoch möglicherweise die anfängliche HTTP-Anfrage abfangen und dadurch die nachfolgenden Antworten des Benutzers steuern.

Natürlich wurde HSTS ins Leben gerufen, um dieses potenzielle Sicherheitsproblem zu lösen. Selbst wenn der Benutzer einen Domänennamen oder eine HTTP-Verbindung eingibt, wird der Browser ausschließlich auf eine HTTPS-Verbindung aktualisiert.

Wie Nginx HSTS konfiguriertSo funktioniert HSTS

HSTS-Richtlinie wird von einer sicheren HTTPS-Site gesendet. Veröffentlicht von HTTP-Antwortheader.

Strict-Transport-Security: max-age=31536000
Nach dem Login kopieren
Wenn der Browser diesen Header von einer HTTPS-Site sieht, weiß er, dass auf den Domainnamen nur über HTTPS (SSL oder TLS) zugegriffen werden kann. Und speichern Sie diese Informationen im Cache von 31536000, was einem Jahr entspricht.

Der optionale Parameter includeSubDomains teilt dem Browser mit, dass diese Richtlinie für alle Subdomains unter der aktuellen Domain gilt.

Strict-Transport-Security: max-age=31536000; includeSubDomains
Nach dem Login kopieren

nginx-Konfiguration HSTS

Setzen Sie den HSTS-Antwortheader in der Nginx-Konfigurationsdatei. Der Parameter

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Nach dem Login kopieren
always stellt sicher, dass alle Antworten diesen Header setzen, einschließlich intern generierter Fehlerantworten. Nginx-Versionen vor 1.7.5 unterstützen den Always-Parameter nicht und intern generierte Fehlerantworten setzen diese Header-Informationen nicht.

Vererbungsregeln für die Add_header-Direktive:

Der Nginx-Konfigurationsblock erbt den Kapselungsblock, in dem sich die Add_header-Direktive befindet, sodass Sie die Add_header-Direktive nur auf dem Server der obersten Ebene platzieren müssen Block. Es gibt auch eine wichtige Ausnahme: Wenn ein Block die add_header-Direktive selbst enthält, erbt er nicht den Header vom umschließenden Block und Sie müssen alle add_header-Direktiven neu definieren.

server {
    listen 443 ssl;
 
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
 
    # This 'location' block inherits the STS header
    location / {
        root /usr/share/nginx/html;
    }
 
    # Because this 'location' block contains another 'add_header' directive,
    # we must redeclare the STS header
    location /servlet {
        add_header X-Served-By "My Servlet Handler";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        proxy_pass http://localhost:8080;
    }
}
Nach dem Login kopieren
HTTP Strict Transport Security testen:

Sobald der Benutzer die HSTS-Richtlinie vorschlägt, wird der Cache-Informationszeitraum durch max-age angegeben. Während dieser Zeit verweigert der Browser den Zugriff auf den Webdienst über unverschlüsseltes HTTP und weigert sich, Ausnahmen für Zertifikatsfehler zu gewähren (sofern die Website zuvor ein gültiges und vertrauenswürdiges Zertifikat übermittelt hat). Wenn ein includeSubDomanis-Parameter angegeben ist, gelten diese Einschränkungen auch für alle Subdomains unter der aktuellen Domain.

Wenn Sie HSTS testen, stellen Sie die Höchstalterszeit kürzer ein.

Ob jede HTTPS-Antwort einen STS-Header haben muss:

Unser Ziel ist es, die HSTS-Richtlinie so schnell wie möglich darzustellen, wenn der Benutzer eine HTTPS-Antwort startet. Wenn sie während der Sitzung HSTS-Richtlinien erhalten, sind sie immer noch anfällig für HTTP-Hijacking-Angriffe. Der Browser muss sich den STS-Header nur einmal ansehen, daher ist es nicht unbedingt erforderlich, ihn zu jedem Standortblock und jeder Antwort hinzuzufügen. Es reicht jedoch möglicherweise nicht aus, es nur zur Startseite oder Anmeldeseite hinzuzufügen. Wenn Sie es nur zur zwischengespeicherten Antwort hinzufügen, wird es vom Client möglicherweise nicht angezeigt. Stellen Sie sicher, dass Sie so viel wie möglich von Ihrer URL abdecken und achten Sie dabei besonders auf dynamische Inhalte.

HTTP und HTTPS parallel

Manchmal muss die Website gleichzeitig unter HTTP und HTTPS laufen

server {
    listen  80;
    listen  443 ssl;
    ...
}
Nach dem Login kopieren
#🎜🎜 #Manchmal ist es notwendig, HTTP-Anfragen an https umzuleiten STS-Header zur Anweisung innerhalb des Max-Age-Zeitraums. Allerdings ist HSTS keine perfekte Lösung für HTTP-Session-Hijacking. Benutzer sind immer noch gefährdet, wenn sie über HTTP auf eine HSTS-geschützte Website zugreifen: 🎜🎜#Kürzlich das Betriebssystem neu installiert

Kürzlich den Browser neu installiert

#🎜 🎜#Zu einem neuen Browser wechseln# 🎜🎜#

Zu einem neuen Gerät wie einem Mobiltelefon wechseln

  1. Browser-Cache löschen

    # 🎜🎜#
  2. Die Website wurde in letzter Zeit nicht besucht und das Höchstalter ist abgelaufen

  3. Um dieses Problem zu lösen, Google besteht auf der Pflege eines Site-Domänennamens und eines Subdomänennamens mit einer „HSTS-Preload-Liste“ und übermittelt seinen Domänennamen über https://hstspreload.appspot.com/. Diese Liste von Domänennamen wird in den wichtigsten Webbrowsern verteilt und fest codiert. Clients, die auf Domänennamen in dieser Liste zugreifen, verwenden aktiv HTTPS und verweigern den Zugriff auf die Site über HTTP.

    Sobald der STS-Header festgelegt oder Ihre Domain an die HSTS-Preload-Liste übermittelt wurde, ist es nicht mehr möglich, ihn zu entfernen. Dies ist eine einseitige Entscheidung, Ihren Domainnamen über HTTPS verfügbar zu machen.

Das obige ist der detaillierte Inhalt vonWie Nginx HSTS konfiguriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!