सभी SSL articles SSL और Certificates

HSTS: HTTP Strict Transport Security explained

HSTS (HTTP Strict Transport Security) एक security header है जो browser को हमेशा HTTPS के through connect करने के लिए कहता है — भले ही user http:// type करे या HTTP link पर click करे। एक बार जब browser HSTS header receive कर लेता है, तो वह उस domain के लिए future के सभी requests automatically HTTPS पर upgrade करता है, downgrade attacks और insecure connections को रोकता है।

HSTS क्यों matter करता है

HSTS के बिना, आपकी site पर first request HTTP हो सकता है (301 redirect trigger होने से पहले)। उस brief window के दौरान, network पर एक attacker कर सकता है:

  • HTTPS strip करें — redirect को intercept करें और user को HTTP पर रखें (SSL stripping attack)
  • Cookies चुराएँ — अगर cookies initial HTTP request में send होती हैं
  • Content inject करें — redirect response को modify करें

HSTS इस window को eliminate करता है। First HTTPS visit के बाद, browser कभी HTTP attempt नहीं करता।

HSTS कैसे enable करें

Nginx

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

इसे अपने HTTPS server block (port 443) के अंदर add करें, HTTP redirect block में नहीं

Apache

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

mod_headers चाहिए (sudo a2enmod headers)।

Cloudflare

Dashboard → SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) → Enable।

HSTS parameters

ParameterExampleMeaning
max-age63072000 (2 years)Browser कितने time (seconds में) HTTPS use करना remember रखता है
includeSubDomainsHSTS को सभी subdomains पर भी apply करता है
preloadHSTS preload list में include होने का signal

max-age choose करना

Stagemax-agePurpose
Testing300 (5 minutes)Commit होने से पहले HTTPS काम करता है verify करें
Confidence604800 (1 week)Rollback ज़रूरी हो तो low risk
Production31536000 (1 year)Standard recommendation
Long-term63072000 (2 years)Preload list के लिए required

छोटे से start करें, धीरे-धीरे बढ़ाएँ। अगर long max-age cache होने के दौरान HTTPS break हो जाता है, तो visitors आपकी site तक बिल्कुल access नहीं कर सकते — browser HTTP से connect करने से refuse करता है।

HSTS preload

HSTS preload list browsers में hardcoded domains की एक list है जो हमेशा HTTPS use करते हैं, first visit पर भी (कोई भी HSTS header receive होने से पहले)।

Preload के लिए requirements

  1. Valid HTTPS certificate serve करें
  2. Same host पर HTTP को HTTPS पर redirect करें
  3. max-age >= 63072000 (2 years) के साथ HSTS header
  4. includeSubDomains directive include करें
  5. preload directive include करें
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

Preload के लिए submit करें

hstspreload.org पर जाएँ, अपना domain enter करें, और submit करें। Review (weeks से months) के बाद, आपका domain browsers की built-in lists में add हो जाता है।

Preload के बारे में warnings

  • इसे undo करना hard है। Preload list से removal में months लगते हैं और browser release cycles चाहिए। उस दौरान, आपका domain सिर्फ HTTPS पर ही access किया जा सकता है।
  • includeSubDomains mandatory है — हर subdomain को HTTPS support करना चाहिए। अगर staging.example.com के पास cert नहीं है, तो यह unreachable हो जाता है।
  • सिर्फ तभी preload करें जब आप sure हैं कि सभी current और future subdomains HTTPS support करेंगे।

Common mistakes

HTTP response पर HSTS set करना

HSTS सिर्फ HTTPS पर send होना चाहिए। अगर आपका HTTP redirect भी HSTS header भेजता है, तो browser इसे ignore करता है (spec में HTTPS mandatory है)। Header सिर्फ अपने port 443 block में set करें।

Subdomains भूलना

includeSubDomains HSTS को सभी subdomains पर apply करता है। अगर internal.example.com पर HTTPS नहीं है, तो यह unreachable हो जाता है। Enable करने से पहले सभी subdomains audit करें।

max-age बहुत जल्दी बहुत high set करना

अगर HTTPS break हो जाता है (expired cert, config error), तो visitors HTTP पर fallback नहीं कर सकते। उनका browser connect करने से refuse करता है। 5 minutes से start करें, verify करें कि सब कुछ काम करता है, फिर 1 year तक बढ़ाएँ।

कैसे check करें कि HSTS active है

curl -sI https://yourdomain.com | grep -i strict-transport
# Expected: strict-transport-security: max-age=63072000; includeSubDomains

Chrome DevTools में: Network tab → request पर click करें → Headers → Strict-Transport-Security देखें।

FAQ

क्या HSTS HTTP→HTTPS redirects replace करता है?

नहीं। HSTS और redirects अलग-अलग purposes serve करते हैं। Redirect first HTTP request को catch करता है। HSTS browser को बताता है कि (first HTTPS visit के बाद) कभी HTTP request न करें। आपको दोनों चाहिए।

क्या HSTS problems create कर सकता है?

हाँ, अगर HTTPS break हो जाए। Long max-age के साथ, browser fallback के रूप में HTTP से connect करने से refuse करता है। इसीलिए आपको short max-age से start करना चाहिए और HTTPS stable होने के बाद ही बढ़ाना चाहिए।

क्या मुझे Cloudflare पर होने पर HSTS चाहिए?

Cloudflare visitor→Cloudflare connection handle करता है, लेकिन आपके origin पर HSTS full chain protect करता है। Edge के लिए Cloudflare के dashboard के through HSTS enable करें, और अगर आप Full (Strict) mode use करते हैं तो अपने origin पर भी।

HSTS और upgrade-insecure-requests CSP directive में क्या difference है?

upgrade-insecure-requests browser को sub-resources (images, scripts) HTTP के बजाय HTTPS पर load करने के लिए कहता है — mixed content fix करता है। HSTS browser को entire domain के लिए हमेशा HTTPS use करने के लिए कहता है। वे अलग-अलग problems solve करते हैं और together use किए जा सकते हैं।

संबंधित लेख

डिप्लॉयमेंट 2026-05-07
HTTP से HTTPS पर Redirect कैसे करें
Server-side redirect के साथ सारा traffic HTTPS पर force करें। 301 permanent redirect के साथ Nginx, Apache, और .htaccess के लिए configuration examples।
SSL और Certificates 2026-05-08
HTTPS क्या है? Complete Guide
HTTPS आपके browser और website के बीच connection encrypt करता है। जानें HTTPS कैसे काम करता है, TLS handshake, HTTP vs HTTPS difference, performance impact, और free में कैसे enable करें।
डिप्लॉयमेंट 2026-05-08
Nginx पर SSL Certificate कैसे Install करें
Nginx पर SSL certificate install करने की step-by-step guide। File upload, full server block config, TLS best practices, HTTP/2, HSTS, redirect setup, testing, और 6 common errors का troubleshooting included है।
डिप्लॉयमेंट 2026-05-08
Apache पर SSL Certificate कैसे Install करें
mod_ssl के साथ Apache पर SSL certificate install करने की step-by-step guide। File upload, VirtualHost config, TLS best practices, HSTS, HTTP redirect, और 5 common errors का solution शामिल है।
अपने browser में मुफ़्त SSL certificate पाएँ
कोई installation नहीं, कोई account नहीं। आपकी private key कभी आपका device नहीं छोड़ती।
अपना certificate पाएँ