Heim >Betrieb und Instandhaltung >Nginx >Wie Nginx HSTS konfiguriert
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.So funktioniert HSTS
HSTS-Richtlinie wird von einer sicheren HTTPS-Site gesendet. Veröffentlicht von HTTP-Antwortheader.
Strict-Transport-Security: max-age=31536000Wenn 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
nginx-Konfiguration HSTS
Setzen Sie den HSTS-Antwortheader in der Nginx-Konfigurationsdatei. Der Parameter
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;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; } }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; ... }#🎜🎜 #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
Browser-Cache löschen
# 🎜🎜#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!