The Padlock That Changed the Internet
In 2014 fewer than 30% of web page loads used HTTPS. In 2026 that number is over 96% on Chrome. The padlock went from a nice-to-have for checkout pages to a hard requirement for modern web features — HTTP/2, HTTP/3, Service Workers, Geolocation, Web Push, getUserMedia, and HTTP Live Streaming all require HTTPS. Browsers actively shame plain HTTP with "Not secure" warnings. Search engines rank HTTPS higher. Hosting HTTP in 2026 is like refusing to lock your front door.
But plenty of teams still get it wrong. Mixed content warnings. Certificates that expired on a Saturday. HSTS misconfigurations that lock users out for a year. TLS 1.0 still enabled "for compatibility." Self-signed certs on internal admin panels. Each one is a real incident.
This guide is a deep dive on HTTP vs HTTPS in 2026: the TLS handshake step by step, TLS versions and what to deprecate, certificate types (DV, OV, EV) and CAs like Let's Encrypt, HSTS, mixed content, HTTP/2 vs HTTP/3 QUIC, SEO and performance, browser warnings, a practical Let's Encrypt + certbot walkthrough, and the mistakes that keep biting production.
What Is HTTP and What Is HTTPS?
HTTP (HyperText Transfer Protocol) is the plain-text application protocol the web has used since 1991. Your browser connects to port 80, sends a request, and receives a response. Every byte — URLs, headers, cookies, passwords, credit card numbers — travels in the clear. Anyone on the network path — the coffee shop Wi-Fi, your ISP, a compromised router — can read and modify it.
HTTPS (HTTP Secure) is the same HTTP wrapped in TLS (Transport Layer Security, the successor to SSL). Your browser connects to port 443, performs a TLS handshake that authenticates the server and negotiates encryption keys, and then speaks HTTP inside the encrypted tunnel. Intermediaries see only the destination IP and the server name (via SNI, partially mitigated by Encrypted Client Hello in TLS 1.3); the rest is opaque.
HTTPS provides three guarantees:
- Confidentiality — the contents are encrypted. Eavesdroppers cannot read them. - Integrity — the contents cannot be modified in flight without detection. - Authenticity — the server is really who it claims to be, proven by a certificate signed by a trusted Certificate Authority.
A URL with https:// in the scheme, and the small padlock icon in the address bar, are the user-visible signals. The mechanics underneath involve asymmetric cryptography, X.509 certificates, and a handshake that takes a few milliseconds on modern hardware.
The TLS Handshake Step by Step
Every HTTPS connection begins with a TLS handshake. Here is the TLS 1.3 flow (RFC 8446), the modern standard since 2018.
1. Client Hello. The browser sends supported TLS versions, cipher suites, a random number, its key share (an elliptic-curve Diffie-Hellman public key), and SNI (Server Name Indication) telling the server which hostname it wants.
2. Server Hello. The server picks a cipher suite, responds with its random number, its key share, and — in TLS 1.3 — immediately sends its certificate and a signature, all encrypted with keys derived from the key exchange.
3. Certificate. An X.509 certificate chaining up to a root CA trusted by the browser. The certificate contains the server's public key, the allowed domain names (Common Name and Subject Alternative Names), validity dates, and the CA's signature.
4. Certificate Verify. The server signs the transcript of the handshake with its private key, proving it owns the certificate.
5. Finished. Both sides confirm they have matching keys.
From step 2 onward everything is encrypted with a symmetric session key derived from the Diffie-Hellman exchange. The asymmetric keys (in the certificate) are used only to authenticate the server — the bulk encryption uses AES-GCM or ChaCha20-Poly1305, which are far faster.
TLS 1.3 compresses all of this into one round-trip (1-RTT), half of TLS 1.2's two. With 0-RTT resumption, repeat connections can skip the round-trip entirely, though 0-RTT data is replay-vulnerable and should not carry state-changing requests.
You can watch a handshake live with openssl s_client -connect example.com:443 -tls1_3 -msg.
TLS Versions: What to Use, What to Kill
Not every TLS version is created equal.
Version — Status • Recommendation SSL 2.0 — Broken since 1995 • Disable everywhere SSL 3.0 — Broken by POODLE (2014) • Disable everywhere TLS 1.0 — Deprecated by RFC 8996 (2021) • Disable TLS 1.1 — Deprecated by RFC 8996 (2021) • Disable TLS 1.2 — Still common • OK but prefer 1.3 TLS 1.3 — RFC 8446 (2018) • Required target
The IETF formally deprecated TLS 1.0 and 1.1 in RFC 8996 (March 2021). All major browsers disabled them by 2020. PCI DSS requires TLS 1.2+ since 2018. Enabling them "for old clients" exposes you to BEAST, POODLE, and Lucky13 attacks and blocks you from PCI compliance.
TLS 1.3 is a ground-up redesign: it removes RSA key exchange (no forward secrecy), CBC ciphers (padding oracle attacks), compression (CRIME), and renegotiation. It enforces AEAD ciphers (AES-GCM, ChaCha20-Poly1305). It is both more secure and faster.
Configure your server for TLS 1.2 and 1.3, disable everything below, and prefer modern cipher suites. Tools like SSL Labs' test at ssllabs.com/ssltest give you a letter grade and specific recommendations. Target an A or A+.
Certificates: DV, OV, EV, and the CAs That Issue Them
A TLS certificate binds a public key to one or more domain names. The binding is attested by a Certificate Authority (CA) that signs the certificate with its own key. Browsers ship with a root store of trusted CAs — Let's Encrypt, DigiCert, Sectigo, GlobalSign, Google Trust Services, ISRG, and so on.
Three certificate levels based on validation strength:
- Domain Validation (DV) — the CA verifies you control the domain, typically via an HTTP or DNS challenge. Issued in minutes. Free from Let's Encrypt. Padlock in browser looks identical to higher tiers. Fine for 99% of sites. - Organization Validation (OV) — CA verifies the organization exists and is registered. Takes 1-3 days. Shows organization name in certificate details, not in the URL bar. - Extended Validation (EV) — CA performs strict legal vetting. Once showed a green company name in the URL bar, but Chrome (77+) and Firefox (70+) removed that UI in 2019-2020. In 2026, EV provides almost no user-visible benefit for the price.
In 2026 most HTTPS certificates are DV from Let's Encrypt, ISRG's free non-profit CA, which has issued over 3 billion certificates. Runner-ups are Google Trust Services (free via Google Domains / Cloud), ZeroSSL, and for-pay CAs like DigiCert and Sectigo for OV/EV.
Certificates have validity periods. Browsers now cap at 398 days (about 13 months) since 2020, moving toward 90 days in the coming years. Let's Encrypt issues for 90 days and renews automatically, which is the right mental model: certificate renewal must be automated.
HSTS: Telling Browsers to Never Downgrade
HTTP Strict Transport Security (HSTS, RFC 6797) is a response header that tells browsers to only speak HTTPS with your domain for a given period, ignoring any attempt to downgrade to HTTP. Without HSTS, an attacker can strip TLS from the first visit (sslstrip attack) and intercept credentials entered on what the user thinks is a secure site.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Three directives:
- max-age — seconds the policy is remembered. One year (31536000) is standard. - includeSubDomains — applies to every subdomain. Only set this if every subdomain serves HTTPS. - preload — signals willingness to be in the HSTS Preload List, a hard-coded list shipped with Chrome, Firefox, Safari, and Edge.
The HSTS Preload List (hstspreload.org) is nuclear: once you are in it, every browser refuses HTTP for your domain, forever, until a new browser release ships. Getting removed takes months and a browser release. Preload only when you are sure.
Common HSTS mistake: setting includeSubDomains when a subdomain still uses HTTP (a forgotten admin panel, an internal tool). Result: users cannot reach that subdomain for a year. Test without includeSubDomains first, then escalate.
Mixed Content and Why It Still Bites
Mixed content is when an HTTPS page loads resources (scripts, images, fonts, stylesheets, iframes) over plain HTTP. Even one HTTP resource compromises the security of the whole page — an attacker can inject malicious JavaScript via the unencrypted link and take over the page.
Browsers distinguish two kinds:
- Active mixed content — scripts, iframes, stylesheets, web workers. Blocked entirely since Chrome 80 and Firefox 70 (2020). - Passive mixed content — images, audio, video. Chrome 85+ auto-upgrades to HTTPS (or blocks if upgrade fails).
In 2026, almost all mixed content is automatically blocked or upgraded. That is not a reason to relax — your audit logs still need to catch it, because a blocked script means broken functionality.
Fix mixed content by:
1. Using protocol-relative URLs (//cdn.example.com/a.js) — though the modern recommendation is explicit https://. 2. Setting a Content-Security-Policy: upgrade-insecure-requests header, which tells the browser to upgrade HTTP to HTTPS automatically before the request is made. 3. Auditing your codebase for hardcoded http:// URLs. Tools like Lighthouse flag them.
HTTP/2 and HTTP/3: The Performance Payoff
HTTPS is not just about security. It unlocks the last two decades of HTTP performance improvements — because modern HTTP versions require TLS.
HTTP/2 (RFC 7540, 2015) multiplexes many requests over a single TCP connection, eliminating head-of-line blocking at the HTTP layer and removing the need for hacks like domain sharding and image spriting. Chrome, Firefox, and Safari only support HTTP/2 over TLS. HTTP/2 can cut page load by 20-40% on high-RTT connections.
HTTP/3 (RFC 9114, 2022) replaces TCP with QUIC, a UDP-based protocol built by Google. Key wins:
- 0-RTT connection setup on repeat visits. - No TCP head-of-line blocking — each stream is independent. - Connection migration — a phone switching from Wi-Fi to cellular keeps the same connection alive. - Built-in TLS 1.3; no separate handshake.
Cloudflare, Google, Meta, and major CDNs all support HTTP/3 in 2026. Measured benefit: 2-5x faster on lossy networks (cellular, satellite, long-haul international). Nearly indistinguishable from HTTP/2 on a clean fiber connection.
Both HTTP/2 and HTTP/3 are encrypted end-to-end. Running HTTPS is a prerequisite to benefit from either.
Setting Up HTTPS with Let's Encrypt
Getting a free certificate on a Linux server takes about five minutes.
1. Install certbot:
sudo apt install certbot python3-certbot-nginx
2. Request a certificate (nginx auto-config mode):
sudo certbot --nginx -d example.com -d www.example.com
Certbot completes an HTTP-01 challenge (serving a token from /.well-known/acme-challenge/) or DNS-01 challenge (TXT record) to prove you control the domain, then installs and configures the certificate in nginx.
3. Verify auto-renewal. Certbot installs a systemd timer or cron job:
sudo systemctl list-timers | grep certbot sudo certbot renew --dry-run
Certificates are valid for 90 days; certbot renews at day 60. Monitor renewal — a silent failure will eventually cause an outage. Set up alerts (Dead Man's Snitch, Datadog synthetics, or UptimeRobot) on certificate expiry.
4. Force HTTPS. Redirect HTTP to HTTPS in nginx:
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }
5. Add HSTS and modern TLS config. Use Mozilla's SSL Configuration Generator at ssl-config.mozilla.org to output a solid baseline.
Cloud platforms (Cloudflare, AWS ACM, Google-managed certs, Azure App Service) automate all of this further. Let's Encrypt remains the universal fallback.
SEO, Performance, and Browser Warnings
SEO. Google confirmed HTTPS as a ranking signal in 2014. In 2026 it is a baseline expectation; non-HTTPS sites rank lower, show "Not Secure" in Chrome, and lose clicks. The gain from going HTTPS is not huge for ranking (0.5% signal by Google's own words), but the loss from staying on HTTP — through negative SERP CTR and bounce — is real.
Performance. The myth that HTTPS is slow is decade-old. Modern TLS 1.3 adds roughly 10-50 ms of handshake on first connect (single RTT + crypto), amortized to near-zero after. AEAD ciphers run at ~5 GB/s per core on modern CPUs. HTTP/2 and HTTP/3, only available over TLS, more than make up for any overhead.
Browser warnings in 2026:
- Not Secure — shown in Chrome, Edge, Firefox for every HTTP page. - Full-page interstitial — shown for invalid certs, expired certs, mismatched hostnames, self-signed certs. - "Your connection is not private" — shown when the cert chain does not verify.
A single expired certificate on a Saturday is an outage. Monitor. Automate. Never rely on manual renewal.
Users cannot "just click through" warnings in 2026 as easily as they used to. Chrome requires typing "thisisunsafe" on HSTS-enforced sites. Internal tools on self-signed certs should use a private CA with corporate root trust, not self-signed.
Common HTTPS Mistakes
Letting certificates expire. The most embarrassing outage. Use cert-monitoring (SSL Labs, uptimerobot, internal Datadog synthetics) and set alerts 14 days before expiry.
Leaving TLS 1.0/1.1 enabled. Fails PCI audits and exposes you to known attacks. Disable in server config; set minimum version to 1.2, prefer 1.3.
Misconfigured HSTS with includeSubDomains. Locks users out of non-HTTPS subdomains for a year. Test without includeSubDomains first.
Mixed content. One HTTP image or script on an HTTPS page compromises the whole session. Use CSP upgrade-insecure-requests and audit regularly.
Self-signed certificates in production. Browsers block; users train themselves to click through warnings. Use Let's Encrypt, even for staging.
Ignoring certificate revocation. If a key leaks, you need to revoke. Know how your CA handles revocation (OCSP, CRL, short-lived certs). Let's Encrypt's 90-day lifetime effectively caps damage.
Using HTTP in hash-based auth or sensitive forms. Even one HTTP login page negates everything. Force HTTPS at the edge.
Weak ciphers. DES, RC4, MD5, SHA-1 in cipher suites. Use only modern AEAD ciphers. Mozilla's config generator helps.
For hashing stored secrets (not transport), see /blog/hash-functions-explained and try /hash-generator for common hashes. For generating strong server and user passwords see /password-generator.
Frequently Asked Questions
Is HTTPS the same as SSL? No. SSL (Secure Sockets Layer) is the older protocol; TLS (Transport Layer Security) is its successor. SSL 2.0 and 3.0 are broken and disabled everywhere. TLS 1.2 and 1.3 are what HTTPS actually runs on in 2026. The names get conflated because the industry spent 20 years calling it "SSL," and terms like "SSL certificate" persist even though the protocol is TLS.
Is Let's Encrypt as secure as paid certificates? Cryptographically, yes. Let's Encrypt DV certificates use the same algorithms (RSA 2048+, ECDSA P-256) as paid CAs. The difference is validation depth — OV and EV certs verify organizational identity, DV only verifies domain control. Browsers treat them identically for encryption; the padlock and trust indicators are the same.
How long does a TLS handshake add to page load? TLS 1.3 adds one network round-trip plus about 1 ms of CPU, so 20-100 ms depending on RTT. On repeat connections with session resumption, it drops to near zero. HTTP/2 and HTTP/3 piggyback on this, so the net effect is faster page loads than HTTP.
What is SNI, and do I still need it? Server Name Indication is a TLS extension that lets the client tell the server which hostname it wants, so a server at one IP can host many HTTPS sites. Every modern client and server supports it. Without SNI, each HTTPS site would need its own IP. In 2026, SNI is universal.
Can I use HTTPS for localhost? Yes, but you need a locally trusted certificate. Tools like mkcert (by Filippo Valsorda) install a local CA in your OS and generate trusted certs for localhost. Do not use self-signed certs — browsers will warn. Do not use a real CA for localhost — CAs will refuse.
Does HTTPS protect me from malware on the destination site? No. HTTPS authenticates the server and encrypts the channel. It does not vouch for the content. A phishing site can have a valid Let's Encrypt certificate; the padlock only says "this is really example-phish.com," not "example-phish.com is safe."
Why do I still see HTTP APIs from major companies? Legacy. Some IoT devices, embedded systems, and internal tools still speak HTTP. Public APIs in 2026 are essentially all HTTPS. If you see an HTTP public API, treat it as a red flag — it is either a dev endpoint you should not be using or a sign of neglected security.
Conclusion
HTTPS in 2026 is not optional. It is the foundation for privacy, integrity, authentication, SEO, performance (via HTTP/2 and HTTP/3), and every modern browser feature. The barrier to entry is zero — Let's Encrypt plus certbot gives you an A-grade HTTPS server in five minutes.
Audit your deployment. Check your TLS config at ssllabs.com/ssltest. Automate renewal. Set up monitoring for expiry. Disable TLS 1.0 and 1.1. Fix mixed content. Add HSTS. Your users, your SEO, and your on-call engineer will thank you.
For related security topics, see /blog/hash-functions-explained for how the cryptographic primitives behind TLS work, and use /hash-generator and /password-generator to generate strong server credentials.
Related Tools and Reading
Tools: /hash-generator for SHA-256 and other hashes used in certificate fingerprints and password storage, and /password-generator for strong passwords to protect server accounts and private keys.
Related reading: /blog/hash-functions-explained for the cryptography beneath TLS, /blog/api-security-best-practices for hardening APIs you serve over HTTPS, /blog/jwt-tokens-explained for authentication inside the encrypted tunnel, and /blog/cors-explained for the browser-side policies that complement HTTPS.