HSTS: HTTP Strict Transport Security cho SEO
Điều gì HSTS thực ra làm, đó Strict-Transport-Security header syntax (max-age, includeSubDomains, preload), đó trình duyệt-chỉ internal chuyển hướng các crawler không bao giờ see, vì sao điều này không replace của bạn 301s, và cách preload có thể lock bạn trong — từ Patrick Stox.
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này
- Công cụ trực tuyến liên quanHTTP Header Checker
HSTS (HTTP Strict Transport Security) là một Strict-Transport-Security header phản hồi — honored chỉ khi điều này arrives over một secure connection — đó tells một trình duyệt để luôn dùng HTTPS cho của bạn domain going forward, closing đó insecure khoảng trống đó một new khách truy cập đầu tiên yêu cầu vẫn làm over HTTP trước của bạn 301 fires. đây là một trình duyệt-layer, theo-client policy on top of máy chủ của bạn-side các chuyển hướng, không một replacement: RFC 6797 có đó trình duyệt rewrite đó URI để HTTPS internally trước bất kỳ yêu cầu goes out (thường shown as an internal 307-style chuyển hướng, though đó RFC không mandate một cụ thể mã trạng thái), so không máy chủ bao giờ sees đó HTTP form và các crawler vẫn cần của bạn real 301 để understand đó move và carry giá trị liên kết. Đó header có three directives — max-age (bắt buộc), includeSubDomains, và preload. Preload bakes của bạn domain vào đó trình duyệt itself qua hstspreload.org (requiring max-age of ít nhất một năm, includeSubDomains, và đó preload flag) và là close để irreversible — removal là một tách biệt submission đó takes months để reach người dùng. HSTS là cũng có chủ ý unforgiving: một trình duyệt đó knows bạn as an HSTS host sẽ hard-fail với không nhấp-qua nếu của bạn certificate bao giờ breaks. So enable điều này chỉ khi HTTPS là genuinely solid trên mỗi subdomain, và treat preload as một một-way door.
TL;DR — HSTS là một nhỏ instruction máy chủ của bạn gửi các trình duyệt đó says “always use HTTPS for my site — never plain HTTP.” (bản dịch) «luôn dùng HTTPS cho my site — không bao giờ đơn giản HTTP.» Điều này plugs một tiny security lỗ hổng đó một thông thường HTTP→HTTPS chuyển hướng leaves open, và điều này không hurt SEO. Nhưng đây là strict on purpose: khi đây là on, một hỏng certificate breaks trang web của bạn với không way cho khách truy cập để nhấp past đó warning. Turn điều này on chỉ khi của bạn HTTPS setup là genuinely solid.
Điều gì HSTS là
bạn đã know bạn nên là on HTTPS — encrypted,
padlock version của bạn trang web. thông thường way để force nó là chuyển hướng: Khi
ai đó types http://yoursite.com, của bạn máy chủ gửi them 301 chuyển hướng để
https://yoursite.com. đó hoạt động, nhưng có sliver của khoảng trống. đó rất đầu tiên
yêu cầu — một trước khi chuyển hướng fires — vẫn goes out over insecure HTTP.
attacker sitting on giống nhau Wi-Fi có thể pounce trong đó window.
HSTS — HTTP Strict Transport Security — closes đó khoảng trống. nó ngắn instruction
( “header”) của bạn máy chủ adds để của nó các phản hồi — nhưng chỉ ones phân phối over
genuinely secure connection; giống nhau header được gửi over đơn giản HTTP là đã bỏ qua, since
attacker có thể nếu không inject hoặc strip nó — đó tells đó một trình duyệt: cho
tiếp theo tuy nhiên-nhiều months, không bao giờ ngay cả try HTTP cho điều này trang web — go straight để
HTTPS. nó policy mỗi trình duyệt learns và stores cho itself, không điều gì đó
thay đổi của bạn máy chủ. sau khi trình duyệt có seen nó, nó upgrades http:// links để
https:// all on của nó own, trước khi bất cứ điều gì leaves device. Evidence for this claim After receiving HSTS, a browser upgrades future HTTP attempts to HTTPS before sending the request. Scope: MDN documents user-agent enforcement after the header has been learned; first-visit protection requires preload or a prior secure visit. Confidence: high · Verified: MDN: Strict-Transport-Security header
Làm HSTS help hoặc hurt SEO?
Neither, trực tiếp. HSTS là security và trust feature, không xếp hạng lever.
nó sẽ không move bạn lên kết quả — nhưng đã xong right nó sẽ không hurt bạn either. một
điều để understand là đó HSTS không phải substitute cho của bạn các chuyển hướng. bạn
vẫn cần của bạn thực máy chủ-side 301 các chuyển hướng từ HTTP để HTTPS, vì đó
Điều gì Google và Bing thực ra see và sử dụng. HSTS hoạt động bên trong trình duyệt cho thực
human khách truy cập; các crawler không rely on nó. giữ cả hai.
một big warning
HSTS là có chủ ý unforgiving. Khi một trình duyệt có “learned” trang web của bạn là HTTPS-chỉ, điều này sẽ từ chối để load đó site tại all nếu của bạn certificate bao giờ expires hoặc misconfigures — với không “proceed anyway” (bản dịch) «proceed anyway» button. đó là đó toàn bộ point (điều này dừng attackers từ tricking mọi người onto một fake HTTP version), nhưng điều này có nghĩa là một lapsed certificate goes từ “annoying warning” (bản dịch) «annoying warning» để “site is down for anyone who’s visited before.” (bản dịch) «site là xuống cho anyone ai visited trước.»
có cũng supercharged version được gọi là preload đó bakes của bạn domain vào trình duyệt itself. nó great, nhưng getting off preload list sau đó là chậm và painful — think months. So preload là một-way door: chỉ walk qua nó Khi bạn’re sure. Evidence for this claim HSTS preload requires at least a one-year max-age, includeSubDomains, and preload; removal can take months to reach users. Scope: The Chromium preload service documents submission and removal behavior; requirements can change and should be rechecked before submission. Confidence: high · Verified: Chromium: HSTS Preload List Submission
Muốn header syntax, trình duyệt-chỉ internal chuyển hướng các crawler không bao giờ see, preload requirements, và thực lockout scenarios? Chuyển để Nâng cao tab.
TL;DR — HSTS là đó
Strict-Transport-Securityheader phản hồi, honored chỉ khi một trình duyệt nhận điều này over một secure connection, và stored theo-client as tương lai policy cho đó host. Điều này closes đó “first request problem” (bản dịch) «đầu tiên yêu cầu vấn đề» một 301 alone leaves open: đó ban đầu HTTP yêu cầu từ một new khách truy cập là insecure until đó chuyển hướng fires, và đó là đó window an SSL-stripping attacker wants. Three directives:max-age(bắt buộc, seconds),includeSubDomains,preload. Khi một trình duyệt enforces HSTS điều này rewrites đó URI để HTTPS internally, trước bất kỳ yêu cầu reaches một máy chủ — RFC 6797 không mandate một cụ thể mã trạng thái cho đó rewrite, though tools thường surface điều này as một 307 — so của bạn máy chủ-side 301s là vẫn mandatory cho các công cụ tìm kiếm và giá trị liên kết; HSTS là on top of them, không thay vì. Preload bakes của bạn domain vào đó trình duyệt qua hstspreload.org (requiresmax-age≥ 31536000,includeSubDomains, vàpreload) và là close để irreversible — removal là một tách biệt submission đó takes months để reach người dùng. Và HSTS là designed để hard-fail on bất kỳ cert lỗi, so enable điều này chỉ khi HTTPS là robust trên mỗi subdomain.
HTTPS hub introduces HSTS as trình duyệt-layer protection đó sits bên cạnh của bạn 301s. điều này trang là deep dive: chính xác header syntax, internal chuyển hướng đó trips SEOs lên, preload list near-irreversibility, và thực-world ways HSTS locks mọi người out.
vấn đề HSTS thực ra solves: đầu tiên yêu cầu
Picture properly migrated trang web. mỗi http:// URL 301-các chuyển hướng để của nó https://
twin, certificate là hợp lệ, canonicals point để HTTPS. Looks airtight. nó không phải,
quite.
Khi brand-new khách truy cập types yoursite.com (không scheme) hoặc clicks old
http://yoursite.com link, trình duyệt đầu tiên yêu cầu goes out over đơn giản HTTP.
của bạn máy chủ các câu trả lời với 301, và mỗi yêu cầu sau khi Đó là secure. nhưng đó
một ban đầu round-trip happened trong clear — và đó chính xác window
SSL-stripping attacker on giống nhau network wants. họ intercept HTTP yêu cầu,
giữ victim on HTTP trong khi họ proxy HTTPS để của bạn máy chủ, và đọc hoặc rewrite
mọi thứ.
HSTS eliminates đó window cho anyone ai có visited trước. web.dev là trực tiếp
về đó mechanism:
“use Strict Transport Security to tell clients they should always connect to your
server using HTTPS, even when following an http:// reference. This defeats attacks
like SSL Stripping, and avoids the round-trip cost of the 301 redirect.” (bản dịch) «Dùng Strict Transport Security để yêu cầu client luôn kết nối đến máy chủ của bạn bằng HTTPS, ngay cả khi sau an http:// reference. Cách này ngăn các cuộc tấn công như SSL Stripping và tránh chi phí một vòng khứ hồi của chuyển hướng 301. »
(web.dev).
Đó cuối cùng clause matters cho performance cũng: một returning trình duyệt skips đó HTTP→HTTPS
round-trip hoàn toàn. Evidence for this claim After receiving HSTS, a browser upgrades future HTTP attempts to HTTPS before sending the request. Scope: MDN documents user-agent enforcement after the header has been learned; first-visit protection requires preload or a prior secure visit. Confidence: high · Verified: MDN: Strict-Transport-Security header
Hai boundary conditions worth là precise về. đầu tiên, HSTS là stored, theo-client policy — nó lives trong đó một trình duyệt own state cho đó host, learned từ header delivered over secure connection; giống nhau header được gửi on HTTP phản hồi là đã bỏ qua outright ( attacker ai có thể inject hoặc strip các header on đơn giản HTTP có thể nếu không neutralize nó), và client đó có không bao giờ đã nhận nó — fresh install, khác trình duyệt, crawler — có không policy để enforce. thứ hai, rewrite là scheme-và-port aware: implicit port 80 yêu cầu becomes implicit port 443 yêu cầu, nhưng nếu gốc URI named rõ ràng non-default port, trình duyệt giữ đó giống nhau port number và đơn giản contacts nó over HTTPS thay vì.
header syntax
HSTS là một phản hồi header với lên để three directives. Theo MDN, forms là:
Strict-Transport-Security: max-age=31536000
Strict-Transport-Security: max-age=31536000; includeSubDomains
Strict-Transport-Security: max-age=63072000; includeSubDomains; preloadmax-age=<seconds>— bắt buộc. “The time, in seconds, that the browser should remember that a host is only to be accessed using HTTPS” (bản dịch) «Thời gian tính bằng giây mà trình duyệt phải ghi nhớ rằng một host chỉ được truy cập bằng HTTPS» (MDN).31536000là một năm;63072000là hai. Đó clock resets on mỗi phản hồi đó carries đó header, so an active site continually renews của nó policy. Này là relative, theo-client state: đơn giản removing đó header không immediately clear điều này — một trình duyệt đó đã learned đó policy giữ enforcing điều này until của nó storedmax-agechạy out. Để turn HSTS off cho clients đó đã learned điều này, bạn có để actively servemax-age=0over một secure phản hồi; đó trình duyệt thì forgets đó policy on của nó tiếp theo secure visit. (max-age=0clears một learned policy chỉ — điều này không xóa một domain từ đó tách biệt preload list.)includeSubDomains— tùy chọn. “If this directive is specified, the HSTS policy applies to all subdomains of the host’s domain as well” (bản dịch) «Nếu chỉ thị này được chỉ định, chính sách HSTS cũng áp dụng cho mọi subdomain của miền của host.» (MDN). Powerful và dangerous trong equal đo lường — see đó lockout scenarios dưới.preload— tùy chọn. MỘT flag đó các tín hiệu của bạn intent để là on đó trình duyệt preload list. Điều này làm không có gì on của nó own; đây là một prerequisite cho submitting để hstspreload.org. Evidence for this claim HSTS preload requires at least a one-year max-age, includeSubDomains, and preload; removal can take months to reach users. Scope: The Chromium preload service documents submission and removal behavior; requirements can change and should be rechecked before submission. Confidence: high · Verified: Chromium: HSTS Preload List Submission
Đó behavior, again từ MDN:
“Before loading an http URL, the browser checks the domain name against its HSTS
hosts list. If the domain name is a case insensitive match for an HSTS host or is a
subdomain of one that specified includeSubDomains, then the browser replaces the
URL scheme with https.” (bản dịch) «Trước loading an http URL, đó trình duyệt kiểm tra đó domain name so với của nó HSTS hosts list. Nếu đó domain name là một case insensitive match cho an HSTS host hoặc là một subdomain of một đó specified includeSubDomains, thì đó trình duyệt replaces đó URL scheme với https.»
internal upgrade các crawler không bao giờ see (Đây là SEO crux)
Ở đây single phần lớn misunderstood điều về HSTS, và reason nó có thể’t replace của bạn các chuyển hướng.
Khi trình duyệt upgrades http:// yêu cầu dưới HSTS, nó rewrites URI để
HTTPS internally, trước khi bất kỳ network yêu cầu là đã làm — RFC 6797 requires
scheme substitution itself nhưng không mandate particular mã trạng thái cho nó
(RFC 6797 §8,3), so
được cho trình duyệt hoặc crawling tool có thể represent đó internal step tuy nhiên nó likes —
nhiều display nó as internal 307, nhưng đó client/tool-cụ thể, không giao thức
bảo đảm. Điều gì matters Đối với SEO là simpler và holds regardless của label: không
máy chủ là contacted cho HTTP version, so không crawler bao giờ sees nó. Googlebot và
Bingbot không carry learned HSTS policy khoảng way returning human Chrome
làm — họ hit của bạn máy chủ fresh, và Điều gì họ cần để see có thực,
máy chủ-side 301. Evidence for this claim RFC 6797 requires the user agent to rewrite a known-HSTS-host HTTP URI to HTTPS internally, but does not mandate any specific redirect status code for that internal rewrite; how a given browser or crawling tool represents that step (e.g., as an internal 307) is a client/tool implementation detail, not a protocol requirement. Scope: RFC 6797 Section 8.3 ("URI Loading and Port Mapping") specifies the UA MUST replace the URI scheme with https; it does not prescribe an HTTP status code for that internal substitution, since no HTTP exchange occurs for it. Section 7.2's suggestion of status code 301 addresses ordinary server-side redirect behavior, not this internal client-side rewrite. Confidence: high · Verified: RFC 6797 §8.3 — URI Loading and Port Mapping
So đó rule là blunt: HSTS không replace máy chủ của bạn-side 301s. Đó 301 là điều gì các công cụ tìm kiếm dùng để understand đó giao thức move và để consolidate các tín hiệu (301 and other permanent redirects don’t cause a loss in PageRank, theo Google). Đó trình duyệt-chỉ internal upgrade là một người dùng-experience và security layer on top. Bạn cần cả hai, đang làm khác nhau jobs:
- 301 (máy chủ-side): cho các crawler, lập chỉ mục, và giá trị liên kết.
- Internal 307-style upgrade (trình duyệt-side, từ HSTS): cho returning humans và SSL-stripping protection — chính xác status representation varies by client/tool.
Bất kỳ hướng dẫn đó tells bạn HSTS “handles the redirect so you can drop your 301” (bản dịch) «xử lý đó chuyển hướng so bạn có thể drop của bạn 301» là sai trong một way đó sẽ âm thầm cost bạn.
HSTS preload: near-vĩnh viễn version
max-age bảo vệ returning khách truy cập, nhưng nó có bootstrap vấn đề:
đầu tiên-time khách truy cập ai có không bao giờ đã nhận của bạn header là vẫn exposed on đó
ban đầu yêu cầu. Preload solves nó by hardcoding của bạn domain vào trình duyệt
nguồn itself, so trình duyệt knows bạn’re HTTPS-chỉ trước khi nó có bao giờ connected.
bạn opt trong tại hstspreload.org. requirements là chính xác:
- “Serve a valid certificate.” (bản dịch) «Phục vụ một chứng chỉ hợp lệ.»
- “Redirect from HTTP to HTTPS on the same host, if you are listening on port 80.” (bản dịch) «Chuyển hướng từ HTTP để HTTPS on đó giống nhau host, nếu bạn là listening on port 80.»
- “Serve all subdomains over HTTPS” (bản dịch) «Serve all subdomains over HTTPS» — including trong particular đó
wwwsubdomain nếu một DNS record tồn tại. - On đó base domain HTTPS phản hồi, an HSTS header nơi “the
max-agemust be at least31536000seconds (1 year),” (bản dịch) «đómax-agephải được ít nhất31536000seconds (1 năm),» “theincludeSubDomainsdirective must be specified,” (bản dịch) «đóincludeSubDomainsdirective phải được specified,» và “thepreloaddirective must be specified.” (bản dịch) «đópreloaddirective phải được specified.» (hstspreload.org)
Đó là lý làm hai-năm ví dụ trên (max-age=63072000; includeSubDomains; preload)
là shape mọi người submit — note những điều này là chính xác submission requirements as
published by hstspreload.org; treat them as hiện tại bar, không vĩnh viễn
constant, và re-kiểm tra trực tiếp trang trước khi bạn submit.
nó helps để giữ four distinct trạng thái straight, since mọi người conflate them constantly:
| State | Điều gì thực ra đúng |
|---|---|
| Token present | của bạn header bao gồm preload. Đây là flag chỉ — nó làm không có gì by itself và không put bạn on bất kỳ list. |
| Eligible | của bạn trang web đáp ứng all four hstspreload.org requirements trên (cert, chuyển hướng, subdomains, header shape). vẫn không on list. |
| Được gửi / pending | bạn’ve được gửi tại hstspreload.org và nó queued cho inclusion trong upcoming trình duyệt phát hành. không tuy vậy enforced cho thực người dùng. |
| thực ra listed | domain là baked vào được cho trình duyệt shipped xây dựng. Enforcement chỉ tồn tại cho người dùng on đó xây dựng — rollout không phải instant hoặc universal trên các trình duyệt. |
Removal chạy giống nhau four trạng thái trong reverse, và chỉ as slowly: removing
preload directive từ của bạn header làm bạn eligible cho removal form, sau đó
submission là pending, và domain vẫn giữ enforced cho bất kỳ người dùng on trình duyệt xây dựng
đó vẫn ships nó — cho đến khi đó xây dựng cycles out.
Hiện tại đó part đó turns preload vào một một-way door. Từ đó submission site itself: “Be aware that inclusion in the preload list cannot easily be undone. Domains can be removed, but it takes months for a change to reach users with a Chrome update and we cannot make guarantees about other browsers.” (bản dịch) «Hãy lưu ý rằng không dễ hoàn tác việc đưa vào danh sách preload. Có thể xóa các miền, nhưng một thay đổi mất nhiều tháng mới đến được người dùng qua bản cập nhật Chrome, và chúng tôi không thể bảo đảm về các trình duyệt khác.» (hstspreload.org). Và của nó own advice: “Don’t request inclusion unless you’re sure that you can support HTTPS for your entire site and all its subdomains in the long term.” (bản dịch) «không yêu cầu inclusion trừ khi bạn là sure đó bạn có thể hỗ trợ HTTPS cho của bạn entire site và all của nó subdomains trong đó dài term.»
Practical translation: preload là genuinely great security posture, nhưng nếu bạn bao giờ cần để phục vụ bất cứ điều gì — legacy subdomain, acquired brand, internal tool — over đơn giản HTTP again, bạn’re stuck đang chờ on trình duyệt phát hành cycles để reach mỗi người dùng. Kinsta hướng dẫn diễn đạt operational reality plainly: nó có thể là difficult và time-consuming xử lý để nhận của bạn domain đã xóa. Treat preload as vĩnh viễn.
Vì sao HSTS là designed để hurt Khi điều break
HSTS strictness không phải một bug — đây là đó entire security bảo đảm. web.dev spells out đó tradeoff: “Clients that have listed your site as a known HSTS Host are likely to hard-fail if your site ever has an error in its TLS configuration, (such as an expired certificate). HSTS is explicitly designed this way to ensure that network attackers can’t trick clients into accessing the site without HTTPS.” (bản dịch) «Các client đã liệt kê trang web của bạn là một HSTS Host đã biết có khả năng thất bại cứng nếu trang web gặp lỗi trong cấu hình TLS (chẳng hạn chứng chỉ hết hạn). HSTS được thiết kế rõ ràng như vậy để bảo đảm kẻ tấn công mạng không thể lừa client truy cập trang web mà không có HTTPS.» (web.dev).
Đó conclusion Google draws là đó sentence I’d tattoo on anyone về để flip này on: “Don’t enable HSTS until you’re certain your site operation is robust enough to avoid ever deploying HTTPS with certificate validation errors.” (bản dịch) «Không bật HSTS cho đến khi bạn chắc chắn hoạt động của trang web đủ ổn định để không bao giờ triển khai HTTPS với lỗi xác thực chứng chỉ.» (web.dev).
“Hard-fail” có nghĩa là chính xác đó: không “proceed anyway” (bản dịch) «proceed anyway» link, không nhấp-qua. On một thông thường HTTPS trang, an expired cert throws một scary interstitial đó một determined người dùng có thể bypass. On an HSTS host, đó trình duyệt từ chối outright. So đó chế độ lỗi of một missed certificate renewal thay đổi category — từ “traffic dips because people are scared off” (bản dịch) «traffic dips vì mọi người là scared off» để “the site is unreachable for every returning visitor.” (bản dịch) «đó site là unreachable cho mỗi returning khách truy cập.»
thực-world lockout scenarios
ways HSTS bites trên thực tế gần như luôn trace lại để includeSubDomains hoặc
preload getting ahead của bạn thực tế HTTPS coverage:
- ** forgotten subdomain.** bạn đặt
includeSubDomainsonexample.com, nhưnglegacy.example.com( old app, status trang, vendor tool) chỉ speaks HTTP hoặc có cert đó không cover nó. mỗi trình duyệt đó saw header hiện tại từ chối để load đó subdomain. Không có gì changed on đó máy chủ — policy reached xuống và broke nó. - ** wildcard-cert khoảng trống.**
*.example.comwildcard coversfoo.example.comnhưng khôngfoo.bar.example.com( wildcard là một DNS label deep). nếu deeper subdomain relies on HTTP hoặc mismatched cert,includeSubDomainslocks nó out. - ** expired cert on HSTS host.** Renewal automation fails, cert lapses, và thay vì bypassable warning bạn nhận trang web đó xuống cho mọi người whose trình duyệt remembers của bạn policy — cho đến khi bạn nhận hợp lệ cert lại và họ reconnect và nhận fresh secure phản hồi. có không nhanh hơn override.
- Preload regret. bạn preloaded, sau đó business cần forces HTTP-chỉ
service dưới domain. Rolling đó lại là hai tách biệt, non-instant jobs, không
một: serving
max-age=0over HTTPS chỉ clears learned policy cho clients đó reconnect trước khi của họ old max-age sẽ’ve expired anyway, trong khi getting domain out của preload list là distinct submission đó vẫn takes trình duyệt phát hành cycles — months — để reach người dùng, independent của bất cứ điều gì bạn thay đổi on của bạn máy chủ. - Local dev / staging collisions. Preloading
example.comvớiincludeSubDomainscó thể làmdev.example.comhoặclocalhost-style internal host dưới giống nhau apex từ chối HTTP, breaking local workflows trong surprising ways.
None của những điều này là reasons để tránh HSTS. họ’re reasons để stage nó: ngắn
max-age đầu tiên, thêm includeSubDomains chỉ sau khi auditing mỗi subdomain, và
reserve preload cho Khi bạn’re certain.
HSTS không phải xếp hạng play (và không touch canonicalization)
Để là clear on đó SEO cách diễn đạt: HSTS không phải một tín hiệu xếp hạng. HTTPS itself là
một có chủ ý tiny một — Google called điều này một “very lightweight
signal” (bản dịch) «very lightweight tín hiệu» affecting ít hơn 1% of các truy vấn — và HSTS là một layer on top of HTTPS, không
một tách biệt xếp hạng input. Điều này cũng không trực tiếp control canonicalization hoặc
lập chỉ mục. Google own tài liệu là hơn cụ thể hơn một flat “doesn’t matter,” (bản dịch) «không quan trọng,»
though: Google prefers HTTPS as canonical over an tương đương HTTP trang except
khi có an không hợp lệ certificate, insecure trang dependencies, an HTTPS trang đó
các chuyển hướng để HTTP, hoặc an HTTP rel="canonical" tag
(Google: consolidating duplicate URLs).
HSTS không thể cách sửa hoặc override bất kỳ of đó. đây là một trình duyệt-side policy với không
influence on Google canonicalization logic — một bad certificate hoặc một hỏng chuyển hướng
chain có thể vẫn push Google toward an HTTP canonical regardless of điều gì của bạn HSTS
header says. Canonicalization là driven by của bạn 301s, của bạn certificate, của bạn
rel="canonical", và của bạn liên kết nội bộ — HSTS earns của nó place cho security,
người dùng trust, và closing đó SSL-stripping khoảng trống — làm điều này cho những reasons, giữ của bạn
301s và certificate genuinely solid, và bạn’ll không bao giờ see HSTS itself on một thứ hạng
báo cáo either way.
nếu bạn’re đang chạy rộng hơn HTTP→HTTPS move, HSTS là cuối cùng điều bạn chuyển on, không đầu tiên — nó belongs sau khi migration có settled, as part của wider trang web migration discipline.
AI summary
condensed take on Nâng cao version:
- HSTS = đó
Strict-Transport-Securityheader phản hồi. Điều này tells các trình duyệt để luôn dùng HTTPS cho của bạn domain, closing đó “first request problem” (bản dịch) «đầu tiên yêu cầu vấn đề» một 301 alone leaves open — đó ban đầu HTTP yêu cầu từ một new khách truy cập là insecure until đó chuyển hướng fires, mà là đó SSL-stripping window. - Three directives:
max-age(bắt buộc, seconds; resets on mỗi phản hồi; removing đó header không clear một learned policy — bạn phải servemax-age=0over HTTPS thay vì),includeSubDomains(áp dụng để all subdomains), vàpreload(một flag để opt vào đó trình duyệt preload list — token present, eligible, được gửi, và thực ra listed là four tách biệt trạng thái). - Đó internal-upgrade crux: khi một trình duyệt enforces HSTS điều này rewrites đó URI để HTTPS internally trước bất kỳ yêu cầu reaches một máy chủ — RFC 6797 không mandate một cụ thể mã trạng thái cho đó rewrite, though tools thường cho thấy điều này as một 307 — so không máy chủ sees điều này và các crawler không bao giờ see điều này. Máy chủ của bạn-side 301s là vẫn mandatory cho các công cụ tìm kiếm và giá trị liên kết. HSTS là on top of của bạn 301s, không bao giờ thay vì them.
- Preload hardcodes của bạn domain vào đó trình duyệt qua
hstspreload.org (requires
max-age≥ 31536000,includeSubDomains, vàpreload). đây là close để irreversible — removal là một tách biệt submission đó takes months để reach người dùng, trình duyệt by trình duyệt. - Designed để hard-fail: an HSTS host với một hỏng/expired cert từ chối để load, với không nhấp-qua. Google: “Don’t enable HSTS until you’re certain your site operation is robust enough to avoid ever deploying HTTPS with certificate validation errors.” (bản dịch) «Không bật HSTS cho đến khi bạn chắc chắn hoạt động của trang web đủ ổn định để không bao giờ triển khai HTTPS với lỗi xác thực chứng chỉ.»
- Lockout scenarios cluster khoảng
includeSubDomainsvà preload outrunning của bạn HTTPS coverage: forgotten HTTP subdomains, wildcard-cert depth gaps, lapsed certs, preload regret, và staging collisions. - Không phải là tín hiệu xếp hạng — và không thể override canonicalization. Google prefers HTTPS as canonical except khi một cert là không hợp lệ, dependencies là insecure, an HTTPS trang các chuyển hướng để HTTP, hoặc đó canonical tag points để HTTP — và HSTS có không power để cách sửa hoặc override bất kỳ of đó. Giữ của bạn 301s, certificate, và canonical tags đang làm đó SEO hoạt động.
Tài liệu chính thức
Chính-nguồn tài liệu từ trình duyệt và các tiêu chuẩn nhóm.
Google / web.dev
- Enable HTTPS on của bạn các máy chủ (web.dev) — đó HSTS section: đó header, SSL-stripping, đó hard-fail warning, và “don’t enable HSTS until you’re certain.” (bản dịch) «không enable HSTS until bạn là certain.»
- Site moves với URL thay đổi — vì sao đó máy chủ-side 301 là vẫn mandatory (các chuyển hướng không lose PageRank).
- Understanding trang experience — nơi HTTPS (và by extension HSTS) sits trong Google cách diễn đạt.
Các tiêu chuẩn & trình duyệt references
- MDN —
Strict-Transport-Security— đầy đủ header syntax, three directives, và Cách trình duyệt upgrades scheme. - RFC 6797 — HTTP Strict Transport Security (HSTS) — gốc đặc tả.
- HSTS Preload List submission (hstspreload.org) — chính xác preload requirements và removal caveats, maintained by Chromium project.
Quotes từ nguồn
On—record statements từ Google/web.dev và Chromium preload service. mỗi link jumps để (hoặc points tại) quoted passage on nguồn trang.
web.dev (Google) — Điều gì HSTS làm và warnings
- “Use HTTP Strict Transport Security (HSTS) to avoid the cost of the 301 redirect.” (bản dịch) «Dùng HTTP Strict Transport Security (HSTS) để tránh đó cost of đó 301 chuyển hướng.» Nhảy đến trích dẫn
- “First, use Strict Transport Security to tell clients they should always connect to
your server using HTTPS, even when following an
http://reference. This defeats attacks like SSL Stripping, and avoids the round-trip cost of the 301 redirect.” (bản dịch) «Đầu tiên, Dùng Strict Transport Security để yêu cầu client luôn kết nối đến máy chủ của bạn bằng HTTPS, ngay cả khi sau anhttp://reference. Cách này ngăn các cuộc tấn công như SSL Stripping và tránh chi phí một vòng khứ hồi của chuyển hướng 301. » Nhảy đến trích dẫn - “Clients that have listed your site as a known HSTS Host are likely to hard-fail if your site ever has an error in its TLS configuration, (such as an expired certificate). HSTS is explicitly designed this way to ensure that network attackers can’t trick clients into accessing the site without HTTPS.” (bản dịch) «Các client đã liệt kê trang web của bạn là một HSTS Host đã biết có khả năng thất bại cứng nếu trang web gặp lỗi trong cấu hình TLS (chẳng hạn chứng chỉ hết hạn). HSTS được thiết kế rõ ràng như vậy để bảo đảm kẻ tấn công mạng không thể lừa client truy cập trang web mà không có HTTPS.» Nhảy đến trích dẫn
- “Don’t enable HSTS until you’re certain your site operation is robust enough to avoid ever deploying HTTPS with certificate validation errors.” (bản dịch) «Không bật HSTS cho đến khi bạn chắc chắn hoạt động của trang web đủ ổn định để không bao giờ triển khai HTTPS với lỗi xác thực chứng chỉ.» Nhảy đến trích dẫn
Chromium preload service — hstspreload.org
- “Be aware that inclusion in the preload list cannot easily be undone. Domains can be removed, but it takes months for a change to reach users with a Chrome update and we cannot make guarantees about other browsers.” (bản dịch) «Hãy lưu ý rằng không dễ hoàn tác việc đưa vào danh sách preload. Có thể xóa các miền, nhưng một thay đổi mất nhiều tháng mới đến được người dùng qua bản cập nhật Chrome, và chúng tôi không thể bảo đảm về các trình duyệt khác.» Nguồn
- “Don’t request inclusion unless you’re sure that you can support HTTPS for your entire site and all its subdomains in the long term.” (bản dịch) «không yêu cầu inclusion trừ khi bạn là sure đó bạn có thể hỗ trợ HTTPS cho của bạn entire site và all của nó subdomains trong đó dài term.» Nguồn
MDN — header behavior
- “Before loading an
httpURL, the browser checks the domain name against its HSTS hosts list. If the domain name is a case insensitive match for an HSTS host or is a subdomain of one that specifiedincludeSubDomains, then the browser replaces the URL scheme withhttps.” (bản dịch) «Trước loading anhttpURL, đó trình duyệt kiểm tra đó domain name so với của nó HSTS hosts list. Nếu đó domain name là một case insensitive match cho an HSTS host hoặc là một subdomain of một đó specifiedincludeSubDomains, thì đó trình duyệt replaces đó URL scheme vớihttps.» Nguồn
nên I enable HSTS — và Cách far?
Walk nó top để bottom. mỗi “không” là dừng sign, không maybe. Một phân biệt trước khi
bạn bắt đầu: chính xác max-age figures dưới ( một vài minutes cho canary, năm cho
resting state) là Patrick operational staging các khuyến nghị, không giao thức
requirements — chỉ hard numeric requirement là hstspreload.org preload
minimum (max-age ≥ 31536000), mà là được gọi là out explicitly tại đó step. Adjust
staging durations để của bạn own risk tolerance và deployment cadence.
1. là của bạn toàn bộ trang web đã on HTTPS với hợp lệ certificate, và có migration settled?
- Không → không touch HSTS tuy vậy. Finish HTTPS migration đầu tiên: 301 mỗi URL, khắc phục mixed nội dung, verify trong Search Console. HSTS là cuối cùng chuyển, không đầu tiên.
- Có → continue.
2. là của bạn certificate renewal automated và monitored (so lapse có thể’t sneak lên on bạn)?
- Không → khắc phục đó đầu tiên. On HSTS host lapsed cert là hard outage, không warning. Nhận auto-renewal + expiry alerting trong place, sau đó continue.
- Có → continue. Enable ngắn
max-age(e.g. một vài minutes để day) với khôngincludeSubDomainstuy vậy, và xác nhận không có gì breaks.
3. có bạn audited mỗi subdomain — including www, legacy apps, status các trang,
và vendor hosts — và confirmed mỗi phục vụ hợp lệ HTTPS?
- Không → giữ
includeSubDomainsoff. Thêm nó hiện tại sẽ reach xuống và break bất kỳ HTTP-chỉ hoặc mismatched-cert subdomain. - Có → Raise
max-agetoward năm và thêmincludeSubDomains. Đây là safe, mạnh resting state cho phần lớn các trang.
4. Làm bạn muốn để close đầu tiên-bao giờ-visit khoảng trống cũng, và là bạn certain bạn’ll không bao giờ cần để phục vụ bất cứ điều gì dưới điều này domain over đơn giản HTTP again?
- Không / không sure → Dừng ở đây.
max-age=31536000; includeSubDomains(không preload) là excellent posture. Preload marginal gain không phải worth của nó irreversibility nếu bạn’re unsure. - Có, certain → Thêm
preloadflag và submit tại hstspreload.org. Treat nó as vĩnh viễn — removal takes months để reach người dùng.
Tách biệt, luôn-đúng branch: làm enabling HSTS có nghĩa là I có thể drop my 301s?
- không bao giờ. Các crawler không see HSTS trình duyệt-chỉ internal upgrade. giữ của bạn máy chủ-side 301s regardless của Cách far xuống điều này tree bạn go.
HSTS rollout checklist
Hoạt động top để bottom — mỗi stage gates tiếp theo. staged durations ở đây là
operational các khuyến nghị, không giao thức requirements — chỉ hard number là
preload max-age ≥ 31536000 minimum trong Stage 3.
trước khi bạn enable bất cứ điều gì
- đểàn bộ trang web (apex +
www+ all subdomains) phục vụ HTTPS với hợp lệ cert. - HTTP→HTTPS 301 các chuyển hướng là trong place máy chủ-side, một-để-một.
- Certificate auto-renewal là configured và expiry monitoring/alerting tồn tại.
- HTTP→HTTPS migration có settled (Search Console sạch, không xếp hạng freefall).
Stage 1 — prove nó safe
- Thêm
Strict-Transport-Securityvới ngắnmax-age(minutes để day). - Không
includeSubDomainstuy vậy. Khôngpreloadtuy vậy. - xác nhận trang web loads thông thường trên các trình duyệt và đó không có gì broke.
Stage 2 — commit
- Raise
max-ageđể ít nhất31536000(một năm). - Audit mỗi subdomain (incl.
www, legacy, status, vendor) cho hợp lệ HTTPS. - chỉ sau khi đó audit truyền, thêm
includeSubDomains. - Re-kiểm thử mỗi subdomain loads over HTTPS.
Stage 3 — preload (tùy chọn, near-vĩnh viễn)
- bạn’re certain bạn’ll không bao giờ cần HTTP dưới điều này domain again.
- Header là
max-age=31536000(hoặc nhiều hơn); includeSubDomains; preload. - HTTP on port 80 các chuyển hướng để HTTPS on giống nhau host.
- Submit và xác nhận status tại hstspreload.org.
luôn đúng — không skip
- máy chủ-side 301s stay trong place (các crawler không bao giờ see trình duyệt-chỉ internal upgrade).
- bạn có được ghi lại rollback plan:
max-age=0phân phối over HTTPS clears learned (non-preloaded) policy cho clients đó reconnect trước khi nó sẽ’ve expired anyway. Preloaded domains cần tách biệt, chậm hơn removal-form xử lý thay vì.
mental models
1. HSTS là layer, không replacement. máy chủ-side 301 = cho các crawler và giá trị liên kết. trình duyệt-side internal upgrade (từ HSTS, thường shown as 307 though RFC không require đó chính xác code) = cho returning humans và SSL-stripping protection. khác audiences, khác jobs. bạn luôn cần cả hai; HSTS không bao giờ subtracts 301.
2. HSTS closes khoảng trống 301 có thể’t. 301 bảo vệ thứ hai yêu cầu onward. đầu tiên yêu cầu — trước khi chuyển hướng fires — là vẫn HTTP. HSTS (cho returning khách truy cập) và preload (cho đầu tiên-bao giờ khách truy cập) là chỉ điều đó close đó cụ thể window.
3. Ratchet lên, không bao giờ jump.
max-age ngắn → dài. Bare header → includeSubDomains (sau khi subdomain audit) →
preload (chỉ nếu certain). mỗi rung là reversible except cuối cùng. không skip
rungs để save time.
4. Strictness là đó feature, và điều này cuts cả hai ways. Đó giống nhau hard-fail đó dừng an attacker cũng dừng bạn khi một cert breaks. So đó prerequisite không “do you want security?” (bản dịch) «làm bạn muốn security?» — mọi người làm — đây là “is your certificate operation robust enough to never fail?” (bản dịch) «là của bạn certificate operation robust đủ để không bao giờ fail?»
5. Preload là một một-way door.
Non-preloaded HSTS có thể là relaxed cho một client đó tiếp theo time điều này làm một secure
yêu cầu và nhận max-age=0 — không nhanh hơn đó, và chỉ cho clients ai
reconnect. Preload takes điều này một step further: removal là một tách biệt submission đó
takes months để reach người dùng, trình duyệt phát hành by trình duyệt phát hành. Put điều này trong đó
“decisions we can’t easily take back” (bản dịch) «decisions we không thể easily take lại» bucket và treat điều này accordingly.
6. HSTS là orthogonal để thứ hạng — nhưng có thể’t rescue bad tín hiệu canonical either. nó không tín hiệu xếp hạng và không trực tiếp control canonicalization hoặc lập chỉ mục. Judge nó on security và trust, không on SEO upside — ở đó không phải bất kỳ. nhưng nó không safety net either: Google HTTPS-canonical preference vẫn backs off cho bad cert, insecure dependencies, HTTPS→HTTP chuyển hướng, hoặc HTTP thẻ canonical, và HSTS có không power để override đó.
HSTS — bảng tra nhanh
** header directives**
| Directive | Bắt buộc? | Điều gì nó làm |
|---|---|---|
max-age=<seconds> | Có | Cách dài trình duyệt enforces HTTPS-chỉ. Resets on mỗi phản hồi over HTTPS; removing header không clear nó — bạn phải phục vụ max-age=0 over HTTPS để disable cho reconnecting clients. |
includeSubDomains | Không | Áp dụng policy để mỗi subdomain cũng. Audit all subdomains đầu tiên. |
preload | Không | Flag opting vào trình duyệt preload list (cần khác hai + hstspreload.org). Token present, eligible, được gửi, và thực ra listed là four tách biệt trạng thái. Near-irreversible sau khi listed. |
phổ biến header các giá trị (staging figures dưới là operational suggestions, không giao thức requirements — hard minimum là preload hàng)
| Giá trị | Meaning |
|---|---|
max-age=300 | 5 minutes — safe đầu tiên kiểm thử. |
max-age=31536000 | 1 năm — tiêu chuẩn resting state. |
max-age=31536000; includeSubDomains | 1 năm, all subdomains — mạnh, non-preload. |
max-age=63072000; includeSubDomains; preload | 2 năm + preload — shape bạn submit (hstspreload.org bắt buộc minimum là max-age ≥ 31536000). |
max-age=0 (phân phối over HTTPS) | Clears learned policy cho clients đó reconnect. không xóa preload listing. |
Các chuyển hướng: mà một, ai sees nó
| chuyển hướng | Origin | Ai sees nó | Job |
|---|---|---|---|
| 301 | của bạn máy chủ | Các crawler và humans | SEO: understand move, carry giá trị liên kết |
| Internal upgrade (thường shown as 307; RFC 6797 không mandate chính xác code) | trình duyệt (HSTS) | Returning humans chỉ — các crawler không bao giờ see nó | Security/UX: skip insecure đầu tiên hop |
Fast facts
- Preload requires
max-age≥ 31536000 +includeSubDomains+preload— verified so với hstspreload.org hiện tại published requirements. - Preload removal là tách biệt submission đó takes months để reach người dùng, trình duyệt by trình duyệt — treat as vĩnh viễn.
- On HSTS host, hỏng cert = hard-fail, không nhấp-qua.
- HSTS là không tín hiệu xếp hạng và làm không replace của bạn 301s.
đặt HSTS header
Thêm header on của bạn HTTPS máy chủ block chỉ, và bắt đầu với ngắn max-age
cho đến khi bạn’ve confirmed không có gì breaks. Thêm ; preload chỉ Khi bạn intend để
submit để hstspreload.org — nó close để irreversible.
Apache (.htaccess)
<IfModule mod_headers.c>
# Start short (300s) to prove it's safe; raise to 31536000 once confident.
Header always set Strict-Transport-Security "max-age=300"
# Full posture once every subdomain is verified HTTPS:
# Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Only add ; preload when submitting to hstspreload.org:
# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
</IfModule>Nginx
# On the HTTPS (listen 443) server block:
add_header Strict-Transport-Security "max-age=300" always;
# Full posture once subdomains are verified:
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Preload shape (near-irreversible):
# add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;kiểm tra liệu HSTS là đặt (và đọc nó lại)
macOS / Linux
# Print only the Strict-Transport-Security response header
curl -sI https://example.com/ | grep -i strict-transport-security
# → strict-transport-security: max-age=31536000; includeSubDomainsWindows (PowerShell)
# Same check in PowerShell
(Invoke-WebRequest -Uri "https://example.com/" -Method Head).Headers["Strict-Transport-Security"]Inspect và clear HSTS entry trong Chrome (DevTools / net-internals)
nếu bạn’re kiểm thử và trình duyệt có “learned” HSTS policy bạn cần clear:
1. Open a new tab and visit: chrome://net-internals/#hsts
2. Under "Query HSTS/PKP domain", enter your host to see the stored policy.
3. Under "Delete domain security policies", enter the host and Delete.
(This clears the *learned* policy — it does NOT remove a *preloaded* domain,
which lives in the browser binary and can't be cleared this way.)sử dụng điều này để xác nhận của bạn header là thực ra là stored, và để reset kiểm thử host —
không as khắc phục cho production, nơi câu trả lời là để actively phục vụ max-age=0 over
HTTPS (đơn giản removing header không clear policy client đã learned;
nó chỉ takes effect sau khi đó client reconnects và nhận max-age=0
phản hồi).
HSTS mistakes đó bite
1. Dropping của bạn 301s vì “HSTS handles it.” (bản dịch) «HSTS xử lý điều này.» Đó classic. HSTS chuyển hướng là một trình duyệt-chỉ internal upgrade các crawler không bao giờ see. Xóa máy chủ của bạn-side 301s và các công cụ tìm kiếm lose đó tín hiệu đó consolidates của bạn move. Giữ cả hai, luôn.
2. Enabling includeSubDomains trước khi auditing subdomains.
single phần lớn phổ biến way để take subdomain offline. nếu bất kỳ subdomain — legacy
app, status trang, vendor host, www itself — không phải on hợp lệ HTTPS, policy
reaches xuống và breaks nó cho mỗi trình duyệt đó saw header.
3. Jumping straight để một-năm max-age (hoặc preload) on day một.
Không safety net. Bắt đầu ngắn (max-age=300), xác nhận không có gì breaks, sau đó ratchet lên.
dài max-age đặt on misconfigured trang web là self-inflicted outage đó lingers
trong các trình duyệt cho năm.
4. Preloading trước khi HTTPS là genuinely bulletproof. Preload là near-irreversible — removal takes months. Google own line: không enable HSTS cho đến khi bạn’re certain của bạn trang web operation là robust đủ. Preload multiplies đó stakes.
5. Treating lapsed certificate as minor vấn đề. On non-HSTS trang web expired cert là bypassable warning. On HSTS host nó hard outage với không nhấp-qua. nếu bạn enable HSTS, cert renewal automation và expiry alerting dừng là nice-để-haves.
6. Setting header on HTTP phản hồi. các trình duyệt bỏ qua HSTS delivered over HTTP (by design — attacker có thể inject hoặc strip nó). nó phải là được gửi on HTTPS phản hồi để count.
7. Forgetting wildcard-cert depth limit.
*.example.com wildcard không cover foo.bar.example.com. Turn on
includeSubDomains và bất kỳ deeper subdomain relying on đó cert nhận locked out.
Incident playbook: HSTS host là locked out
- xác nhận thất bại từ sạch network và nhiều hơn một trình duyệt. Record affected hostnames và chính xác certificate lỗi. remembered HSTS policy có thể làm symptom differ giữa returning và đầu tiên-time khách truy cập.
- Restore hợp lệ HTTPS đầu tiên. nếu certificate là expired, mismatched, hoặc bị thiếu intermediate, renew hoặc replace nó và deploy hoàn tất chain. HSTS trình duyệt sẽ không offer safe HTTP bypass.
- Map policy phạm vi. Inspect trực tiếp
Strict-Transport-Securityheader và determine liệuincludeSubDomainshoặc preload extends outage beyond hostname đó được gửi nó. - Inventory mỗi affected subdomain. cho forgotten HTTP-chỉ host, put hợp lệ certificate và HTTPS điểm cuối trong front của nó trước khi deciding liệu để giữ, migrate, hoặc chuyển hướng service.
- đúng policy chỉ sau khi access là restored. nếu phạm vi là unsafe, reduce hoặc xóa header on HTTPS các phản hồi. đó không instantly clear policy đã được lưu đệm by các trình duyệt, và preload removal là tách biệt, chậm xử lý.
- Verify recovery. Kiểm thử apex,
www, và mỗi affected subdomain cho hợp lệ chain, đúng hostname, một-hop HTTP→HTTPS chuyển hướng, và dự kiến HSTS header. giữ certificate-expiry monitoring on giống nhau inventory.
không tear xuống HTTP chuyển hướng hoặc tell người dùng để bypass warning. durable khắc phục là hợp lệ HTTPS điểm cuối mọi nơi active HSTS policy reaches.
Audit trực tiếp HSTS policy
Act as a security-minded technical SEO. Review this Strict-Transport-Security
header, the HTTP redirect response, and the supplied subdomain inventory.
For the header, parse max-age, includeSubDomains, and preload. Explain the effective
scope, identify subdomains whose HTTPS or certificate coverage is unproven, and
separate browser-side HSTS behavior from the server-side 301 search engines need. Use
GET requests (HEAD can behave differently on some servers/clients), and record which
client or tool produced each observation and its version, since internal-redirect
representation is client/tool-specific rather than a fixed protocol value.
Recommend the next rollout stage: keep a short max-age canary, lengthen max-age,
add includeSubDomains, or consider preload. Do not recommend preload unless the
evidence shows a valid certificate, same-host HTTP→HTTPS redirects, HTTPS on every
subdomain, max-age of at least 31536000, includeSubDomains, and the preload token.
Return: observed configuration, risks, blocking evidence, next action, rollback
constraint, and exact validation checks.Triage HSTS lockout
Given the affected hostnames, browser error, certificate details, DNS/CDN layout,
and live response headers, identify whether this is an expired certificate, hostname
mismatch, incomplete chain, includeSubDomains spillover, or preload issue. Prioritize
restoring valid HTTPS. Explain why removing a header does not immediately erase a
cached browser policy, then provide recovery and verification steps. HSTS inspection toolkit
- HTTP Header Checker — inspect trực tiếp
Strict-Transport-Securityheader và xác nhận nó xuất hiện on HTTPS các phản hồi. curl -I— so sánh HTTP chuyển hướng với HTTPS header không có relying on trình duyệt remembered HSTS state.- trình duyệt DevTools — xác nhận cuối phản hồi các header và certificate lỗi seen by thực client.
- HSTS preload status — kiểm tra submission requirements và liệu domain là đã represented trong preload xử lý.
sử dụng ít nhất hai views: command-line output hiển thị máy chủ phản hồi, trong khi trình duyệt cũng exposes client-side enforcement và certificate hard failures. Ưu tiên GET over HEAD Khi comparing tools — some các máy chủ và clients represent hai differently — và note chính xác client/tool/version behind mỗi reading.
Staged HSTS rollout các kiểm thử
Kiểm thử 0: state matrix (chạy điều này trước khi staging thay đổi)
HSTS status không phải một fact — nó several independent trạng thái đó có thể disagree. Track them riêng, theo hostname:
| Dimension | Điều gì để kiểm tra | Notes |
|---|---|---|
| Trực tiếp HTTPS header, by phản hồi class | Strict-Transport-Security giá trị on thực HTTPS các phản hồi (home trang, deep các trang, API/asset các phản hồi có thể differ) | sử dụng GET, không HEAD — some các máy chủ/CDNs vary header emission by phương thức |
| Port-80 chuyển hướng | genuine máy chủ-side chuyển hướng tồn tại on port 80, không chỉ reliance on learned client policy | Đây là Điều gì đầu tiên-time và non-HSTS clients phụ thuộc on |
| Certificate coverage | Hợp lệ chain cho apex, www, và mỗi subdomain trong phạm vi | Wildcard certs không cover thứ hai DNS label deep |
| Parent so với. entry-point subdomains | Liệu trực tiếp-visited subdomain có thực ra đã nhận của nó own HSTS phản hồi, since nó có thể không inherit parent learned policy way includeSubDomains implies on paper | Kiểm thử mỗi entry point trực tiếp, không chỉ apex |
| Learned state, fresh so với. returning client | Behavior on client đó có không bao giờ seen của bạn header so với. một đó có | Clear trình duyệt HSTS state (hoặc sử dụng sạch profile) để simulate “fresh” |
| Thực tế preload status | Liệu domain là listed trong được cho trình duyệt shipped xây dựng, không chỉ được gửi | kiểm tra qua trình duyệt own status trang/flag, không chỉ submission form |
Record client, tool, và version cho mỗi observation — internal-chuyển hướng representation và HSTS enforcement details vary trên các trình duyệt, các crawler, và command-line tools, và stale reading từ một client có thể trông giống contradiction đó không phải thực.
Kiểm thử 1: ngắn max-age canary
- Purpose: Prove header là emitted chỉ từ healthy HTTPS các phản hồi trước khi committing clients để dài policy.
- Phương thức: Inspect representative templates và hosts với HTTP Header Checker
và
curl -I; so sánh deployed giá trị với approved canary configuration. - Dự kiến kết quả: HTTPS các phản hồi carry dự kiến ngắn
max-age; HTTP vẫn trả về máy chủ-side vĩnh viễn chuyển hướng để HTTPS. - thất bại trigger: Bị thiếu hoặc duplicated các header, unexpected dài duration, certificate các lỗi, hoặc bất kỳ chuyển hướng loop.
- tiếp theo hành động: khắc phục header hoặc HTTPS điểm cuối và giữ rollout tại canary stage.
Kiểm thử 2: includeSubDomains readiness
- Purpose: Ngăn parent policy từ locking out forgotten hostname.
- Phương thức: Kiểm thử mỗi DNS hostname trong maintained subdomain inventory cho hợp lệ HTTPS phản hồi, đúng certificate name, và hoàn tất chain.
- Dự kiến kết quả: mỗi trong-phạm vi subdomain hoạt động over HTTPS, including legacy, vendor, development, và deeper-cấp độ hosts.
- thất bại trigger: bất kỳ HTTP-chỉ service, expired hoặc mismatched certificate, hoặc hostname bị thiếu từ inventory.
- tiếp theo hành động: Remediate hoặc relocate host trước khi thêm
includeSubDomains.
Kiểm thử 3: preload readiness
- Purpose: Verify near-vĩnh viễn policy satisfies được ghi lại submission requirements.
- Phương thức: xác nhận hợp lệ certificate, giống nhau-host HTTP→HTTPS các chuyển hướng, HTTPS on
all subdomains, và apex header với
max-agecủa ít nhất31536000,includeSubDomains, vàpreload. - Dự kiến kết quả: mỗi requirement truyền và organization accepts chậm removal path.
- thất bại trigger: bất kỳ thất bại kỹ thuật requirement hoặc unresolved cần cho HTTP-chỉ subdomain.
- tiếp theo hành động: không submit; vẫn on reversible staged policy.
các tài nguyên worth của bạn time
My speaking
- Tốt hơn Safe hơn Sorry với HTTPS — SMX East 2016 (SlideShare) — my deep-dive on TLS, phổ biến HTTPS implementation failures, và migration gotchas đó HSTS cả hai closes và có thể amplify. (Standing disclaimer áp dụng: nó my understanding của những điều này các hệ thống, và adoption số liệu trong nó là từ 2016.)
My related writing
- Người mới bắt đầu Hướng dẫn để kỹ thuật SEO — nơi HTTPS và HSTS fit trong bigger picture.
từ khoảng ngành
- Enable HTTPS on của bạn các máy chủ (web.dev) — Google own HSTS hướng dẫn: header, SSL-stripping, và hard-fail warning.
- MDN —
Strict-Transport-Security— authoritative header reference: syntax, directives, và scheme-upgrade behavior. - HSTS Preload List submission (hstspreload.org) — Chromium project preload requirements và near-irreversibility caveats.
- RFC 6797 — HTTP Strict Transport Security — gốc đặc tả, cho Khi bạn cần chính xác wording của directive.
- HSTS — Điều gì nó là và Cách sử dụng nó (Kinsta) — practical implementation hướng dẫn covering trình duyệt-cấp độ internal chuyển hướng, preload list, và lock-trong risks.
- SSL Labs máy chủ Kiểm thử (Qualys) — grade của bạn TLS configuration và xác nhận HSTS là phân phối correctly.
Số liệu và hard facts worth citing
- Preload requires
max-age≥ 31536000 (1 năm),includeSubDomains, vàpreload. Đó chính xác, non-negotiable submission bar cho đó trình duyệt-baked list. Nguồn - Preload removal takes months để reach người dùng. Từ đó submission service: “inclusion in the preload list cannot easily be undone… it takes months for a change to reach users with a Chrome update.” (bản dịch) «inclusion trong đó preload list không thể easily là undone… điều này takes months cho một thay đổi để reach người dùng với một Chrome cập nhật.» Này là đó number đó làm preload một một-way door. Nguồn
- HSTS hosts hard-fail on bất kỳ TLS lỗi. web.dev: clients đó know trang web của bạn as an HSTS host “are likely to hard-fail if your site ever has an error in its TLS configuration.” (bản dịch) «là có khả năng để hard-fail nếu trang web của bạn bao giờ có an lỗi trong của nó TLS configuration.» Không nhấp-qua — một lapsed cert becomes an outage. Nguồn
- HTTPS itself là “a very lightweight signal—affecting fewer than 1% of global queries.” (bản dịch) «một very lightweight tín hiệu—affecting ít hơn 1% of global các truy vấn.» Google own cách diễn đạt — và HSTS là một layer on top of HTTPS, không một tách biệt xếp hạng input, so của nó SEO weight là effectively zero. Right-size expectations accordingly. Nguồn
Tự kiểm tra: HSTS
Five nhanh các câu hỏi on HSTS. Pick câu trả lời cho mỗi, sau đó kiểm tra.
Nhật ký thay đổi
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 17 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.