Recent from talks
Nothing was collected or created yet.
HTTPS
View on Wikipedia
| HTTP |
|---|
| Request methods |
| Header fields |
| Response status codes |
| Security access control methods |
| Security vulnerabilities |
| Internet protocol suite |
|---|
| Application layer |
| Transport layer |
| Internet layer |
| Link layer |
Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It uses encryption for secure communication over a computer network, and is widely used on the Internet.[1][2] In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, Secure Sockets Layer (SSL). The protocol is therefore also referred to as HTTP over TLS,[3] or HTTP over SSL.
The principal motivations for HTTPS are authentication of the accessed website and protection of the privacy and integrity of the exchanged data while it is in transit. It protects against man-in-the-middle attacks, and the bidirectional block cipher encryption of communications between a client and server protects the communications against eavesdropping and tampering.[4][5] The authentication aspect of HTTPS requires a trusted third party to sign server-side digital certificates. This was historically an expensive operation, which meant fully authenticated HTTPS connections were usually found only on secured payment transaction services and other secured corporate information systems on the World Wide Web. In 2016, a campaign by the Electronic Frontier Foundation with the support of web browser developers led to the protocol becoming more prevalent.[6] HTTPS is since 2018[7] used more often by web users than the original, non-secure HTTP, primarily to protect page authenticity on all types of websites, secure accounts, and keep user communications, identity, and web browsing private.
Overview
[edit]
The Uniform Resource Identifier (URI) scheme HTTPS has identical usage syntax to the HTTP scheme. However, HTTPS signals the browser to use an added encryption layer of SSL/TLS to protect the traffic. SSL/TLS is especially suited for HTTP, since it can provide some protection even if only one side of the communication is authenticated. This is the case with HTTP transactions over the Internet, where typically only the server is authenticated (by the client examining the server's certificate).
HTTPS creates a secure channel over an insecure network. This ensures reasonable protection from eavesdroppers and man-in-the-middle attacks, provided that adequate cipher suites are used and that the server certificate is verified and trusted.
Because HTTPS piggybacks HTTP entirely on top of TLS, the entirety of the underlying HTTP protocol can be encrypted. This includes the request's URL, query parameters, headers, and cookies (which often contain identifying information about the user). However, because website addresses and port numbers are necessarily part of the underlying TCP/IP protocols, HTTPS cannot protect their disclosure. In practice this means that even on a correctly configured web server, eavesdroppers can infer the IP address and port number of the web server, and sometimes even the domain name (e.g. www.example.org, but not the rest of the URL) that a user is communicating with, along with the amount of data transferred and the duration of the communication, though not the content of the communication.[4]
Web browsers know how to trust HTTPS websites based on certificate authorities that come pre-installed in their software. Certificate authorities are in this way being trusted by web browser creators to provide valid certificates. Therefore, a user should trust an HTTPS connection to a website if and only if all of the following are true:
- The user trusts that their device, hosting the browser and the method to get the browser itself, is not compromised (i.e. there is no supply chain attack).
- The user trusts that the browser software correctly implements HTTPS with correctly pre-installed certificate authorities.
- The user trusts the certificate authority to vouch only for legitimate websites (i.e. the certificate authority is not compromised and there is no mis-issuance of certificates).
- The website provides a valid certificate, which means it was signed by a trusted authority.
- The certificate correctly identifies the website (e.g., when the browser visits "https://example.com", the received certificate is properly for "example.com" and not some other entity).
- The user trusts that the protocol's encryption layer (SSL/TLS) is sufficiently secure against eavesdroppers.
HTTPS is especially important over insecure networks and networks that may be subject to tampering. Insecure networks, such as public Wi-Fi access points, allow anyone on the same local network to packet-sniff and discover sensitive information not protected by HTTPS. Additionally, some free-to-use and paid WLAN networks have been observed tampering with webpages by engaging in packet injection in order to serve their own ads on other websites. This practice can be exploited maliciously in many ways, such as by injecting malware onto webpages and stealing users' private information.[8]
HTTPS is also important for connections over the Tor network, as malicious Tor nodes could otherwise damage or alter the contents passing through them in an insecure fashion and inject malware into the connection. This is one reason why the Electronic Frontier Foundation and the Tor Project started the development of HTTPS Everywhere,[4] which is included in Tor Browser.[9]
As more information is revealed about global mass surveillance and criminals stealing personal information, the use of HTTPS security on all websites is becoming increasingly important regardless of the type of Internet connection being used.[10][11] Even though metadata about individual pages that a user visits might not be considered sensitive, when aggregated it can reveal a lot about the user and compromise the user's privacy.[12][13][14]
Deploying HTTPS also allows the use of HTTP/2 and HTTP/3 (and their predecessors SPDY and QUIC), which are new HTTP versions designed to reduce page load times, size, and latency.
It is recommended to use HTTP Strict Transport Security (HSTS) with HTTPS to protect users from man-in-the-middle attacks, especially SSL stripping.[14][15]
HTTPS should not be confused with the seldom-used Secure HTTP (S-HTTP) specified in RFC 2660.
Usage in websites
[edit]As of April 2018[update], 33.2% of Alexa top 1,000,000 websites use HTTPS as default[16] and 70% of page loads (measured by Firefox Telemetry) use HTTPS.[17] As of December 2022[update], 58.4% of the Internet's 135,422 most popular websites have a secure implementation of HTTPS,[18] However, despite TLS 1.3's release in 2018, adoption has been slow, with many still remaining on the older TLS 1.2 protocol.[19]
Browser integration
[edit]Most browsers display a warning if they receive an invalid certificate. Older browsers, when connecting to a site with an invalid certificate, would present the user with a dialog box asking whether they wanted to continue. Newer browsers display a warning across the entire window. Newer browsers also prominently display the site's security information in the address bar. Extended validation certificates show the legal entity on the certificate information. Most browsers also display a warning to the user when visiting a site that contains a mixture of encrypted and unencrypted content. Additionally, many web filters return a security warning when visiting prohibited websites.
-
Many web browsers, including Firefox (shown here), use the address bar to tell the user that their connection is secure, an Extended Validation Certificate should identify the legal entity for the certificate.
-
Most web browsers alert the user when visiting sites that have invalid security certificates.
The Electronic Frontier Foundation, opining that "In an ideal world, every web request could be defaulted to HTTPS", has provided an add-on called HTTPS Everywhere for Mozilla Firefox, Google Chrome, Chromium, and Android, which enables HTTPS by default for hundreds of frequently used websites.[20][21]
Forcing a web browser to load only HTTPS content has been supported in Firefox starting in version 83.[22] Starting in version 94, Google Chrome is able to "always use secure connections" if toggled in the browser's settings.[23][24]
Security
[edit]The security of HTTPS is that of the underlying TLS, which typically uses long-term public and private keys to generate a short-term session key, which is then used to encrypt the data flow between the client and the server. X.509 certificates are used to authenticate the server (and sometimes the client as well). As a consequence, certificate authorities and public key certificates are necessary to verify the relation between the certificate and its owner, as well as to generate, sign, and administer the validity of certificates. While this can be more beneficial than verifying the identities via a web of trust, the 2013 mass surveillance disclosures drew attention to certificate authorities as a potential weak point allowing man-in-the-middle attacks.[25][26] An important property in this context is forward secrecy, which ensures that encrypted communications recorded in the past cannot be retrieved and decrypted should long-term secret keys or passwords be compromised in the future. Not all web servers provide forward secrecy.[27][needs update]
For HTTPS to be effective, a site must be completely hosted over HTTPS. If some of the site's contents are loaded over HTTP (scripts or images, for example), or if only a certain page that contains sensitive information, such as a log-in page, is loaded over HTTPS while the rest of the site is loaded over plain HTTP, the user will be vulnerable to attacks and surveillance. Additionally, cookies on a site served through HTTPS must have the secure attribute enabled. On a site that has sensitive information on it, the user and the session will get exposed every time that site is accessed with HTTP instead of HTTPS.[14]
Technical
[edit]Difference from HTTP
[edit]HTTPS URLs begin with "https://" and use port 443 by default, whereas HTTP URLs begin with "http://" and use port 80 by default.
HTTP is not encrypted and thus is vulnerable to man-in-the-middle and eavesdropping attacks, which can let attackers gain access to website accounts and sensitive information, and modify webpages to inject malware or advertisements. HTTPS is designed to withstand such attacks and is considered secure against them (with the exception of HTTPS implementations that use deprecated versions of SSL).
Network layers
[edit]HTTP operates at the highest layer of the TCP/IP model—the application layer; as does the TLS security protocol (operating as a lower sublayer of the same layer), which encrypts an HTTP message prior to transmission and decrypts a message upon arrival. Strictly speaking, HTTPS is not a separate protocol, but refers to the use of ordinary HTTP over an encrypted SSL/TLS connection.
HTTPS encrypts all message contents, including the HTTP headers and the request/response data. With the exception of the possible CCA cryptographic attack described in the limitations section below, an attacker should at most be able to discover that a connection is taking place between two parties, along with their domain names and IP addresses.
Server setup
[edit]To prepare a web server to accept HTTPS connections, the administrator must create a public key certificate for the web server. This certificate must be signed by a trusted certificate authority for the web browser to accept it without warning. The authority certifies that the certificate holder is the operator of the web server that presents it. Web browsers are generally distributed with a list of signing certificates of major certificate authorities so that they can verify certificates signed by them.
Acquiring certificates
[edit]A number of commercial certificate authorities exist, offering paid-for SSL/TLS certificates of a number of types, including Extended Validation Certificates.
Let's Encrypt, launched in April 2016,[28] provides free and automated service that delivers basic SSL/TLS certificates to websites.[29] According to the Electronic Frontier Foundation, Let's Encrypt will make switching from HTTP to HTTPS "as easy as issuing one command, or clicking one button."[30] The majority of web hosts and cloud providers now leverage Let's Encrypt, providing free certificates to their customers.
Use as access control
[edit]The system can also be used for client authentication in order to limit access to a web server to authorized users. To do this, the site administrator typically creates a certificate for each user, which the user loads into their browser. Normally, the certificate contains the name and e-mail address of the authorized user and is automatically checked by the server on each connection to verify the user's identity, potentially without even requiring a password.
In case of compromised secret (private) key
[edit]An important property in this context is perfect forward secrecy (PFS). Possessing one of the long-term asymmetric secret keys used to establish an HTTPS session should not make it easier to derive the short-term session key to then decrypt the conversation, even at a later time. Diffie–Hellman key exchange (DHE) and Elliptic-curve Diffie–Hellman key exchange (ECDHE) are in 2013 the only schemes known to have that property. In 2013, only 30% of Firefox, Opera, and Chromium Browser sessions used it, and nearly 0% of Apple's Safari and Microsoft Internet Explorer sessions.[27] TLS 1.3, published in August 2018, dropped support for ciphers without forward secrecy. As of February 2019[update], 96.6% of web servers surveyed support some form of forward secrecy, and 52.1% will use forward secrecy with most browsers.[31] As of July 2023[update], 99.6% of web servers surveyed support some form of forward secrecy, and 75.2% will use forward secrecy with most browsers.[32]
Certificate revocation
[edit]A certificate may be revoked before it expires, for example because the secrecy of the private key has been compromised. Newer versions of popular browsers such as Firefox,[33] Opera,[34] and Internet Explorer on Windows Vista[35] implement the Online Certificate Status Protocol (OCSP) to verify that this is not the case. The browser sends the certificate's serial number to the certificate authority or its delegate via OCSP (Online Certificate Status Protocol) and the authority responds, telling the browser whether the certificate is still valid or not.[36] The CA may also issue a CRL to tell people that these certificates are revoked. CRLs are no longer required by the CA/Browser forum,[37][needs update] nevertheless, they are still widely used by the CAs. Most revocation statuses on the Internet disappear soon after the expiration of the certificates.[38]
Limitations
[edit]SSL (Secure Sockets Layer) and TLS (Transport Layer Security) encryption can be configured in two modes: simple and mutual. In simple mode, authentication is only performed by the server. The mutual version requires the user to install a personal client certificate in the web browser for user authentication.[39] In either case, the level of protection depends on the correctness of the implementation of the software and the cryptographic algorithms in use.[citation needed]
SSL/TLS does not prevent the indexing of the site by a web crawler, and in some cases the URI of the encrypted resource can be inferred by knowing only the intercepted request/response size.[40] This allows an attacker to have access to the plaintext (the publicly available static content), and the encrypted text (the encrypted version of the static content), permitting a cryptographic attack.[citation needed]
Because TLS operates at a protocol level below that of HTTP and has no knowledge of the higher-level protocols, TLS servers can only strictly present one certificate for a particular address and port combination.[41] In the past, this meant that it was not feasible to use name-based virtual hosting with HTTPS. A solution called Server Name Indication (SNI) exists, which sends the hostname to the server before encrypting the connection, although older browsers do not support this extension. Support for SNI is available since Firefox 2, Opera 8, Apple Safari 2.1, Google Chrome 6, and Internet Explorer 7 on Windows Vista.[42][43][44]
A sophisticated type of man-in-the-middle attack called SSL stripping was presented at the 2009 Blackhat Conference. This type of attack defeats the security provided by HTTPS by changing the https: link into an http: link, taking advantage of the fact that few Internet users actually type "https" into their browser interface: they get to a secure site by clicking on a link, and thus are fooled into thinking that they are using HTTPS when in fact they are using HTTP. The attacker then communicates in clear with the client.[45] This prompted the development of a countermeasure in HTTP called HTTP Strict Transport Security.[citation needed]
HTTPS has been shown to be vulnerable to a range of traffic analysis attacks. Traffic analysis attacks are a type of side-channel attack that relies on variations in the timing and size of traffic in order to infer properties about the encrypted traffic itself. Traffic analysis is possible because SSL/TLS encryption changes the contents of traffic, but has minimal impact on the size and timing of traffic. In May 2010, a research paper by researchers from Microsoft Research and Indiana University discovered that detailed sensitive user data can be inferred from side channels such as packet sizes. The researchers found that, despite HTTPS protection in several high-profile, top-of-the-line web applications in healthcare, taxation, investment, and web search, an eavesdropper could infer the illnesses/medications/surgeries of the user, his/her family income, and investment secrets.[46]
The fact that most modern websites, including Google, Yahoo!, and Amazon, use HTTPS causes problems for many users trying to access public Wi-Fi hot spots, because a captive portal Wi-Fi hot spot login page fails to load if the user tries to open an HTTPS resource.[47] Several websites, such as NeverSSL,[48] guarantee that they will always remain accessible by HTTP.[49]
History
[edit]Netscape Communications created HTTPS in 1994 for its Netscape Navigator web browser.[50] Originally, HTTPS was used with the SSL protocol.[51] The original SSL protocol was developed by Taher Elgamal, chief scientist at Netscape Communications.[52][53][54] As SSL evolved into Transport Layer Security (TLS), HTTPS was formally specified by RFC 2818[55] in May 2000. Google announced in February 2018 that its Chrome browser would mark HTTP sites as "Not Secure" after July 2018.[51] This move was to encourage website owners to implement HTTPS, as an effort to make the World Wide Web more secure.
See also
[edit]- Transport Layer Security
- Bullrun (decryption program) – a secret anti-encryption program run by the US National Security Agency
- Computer security
- HSTS
- Opportunistic encryption
- Stunnel
References
[edit]- ^ "Secure your site with HTTPS". Google Support. Google Inc. Archived from the original on 1 March 2015. Retrieved 20 October 2018.
- ^ "What is HTTPS?". Comodo CA Limited. Archived from the original on 12 February 2015. Retrieved 20 October 2018.
Hyper Text Transfer Protocol Secure (HTTPS) is the secure version of HTTP [...]
- ^ "https URI Scheme". HTTP Semantics. IETF. June 2022. sec. 4.2.2. doi:10.17487/RFC9110. RFC 9110.
- ^ a b c "HTTPS Everywhere FAQ". 8 November 2016. Archived from the original on 14 November 2018. Retrieved 20 October 2018.
- ^ "Usage Statistics of Default protocol https for Websites, July 2019". w3techs.com. Archived from the original on 1 August 2019. Retrieved 20 July 2019.
- ^ "Encrypting the Web". Electronic Frontier Foundation. Archived from the original on 18 November 2019. Retrieved 19 November 2019.
- ^ "Majority of the world's top million websites now use HTTPS". welivesecurity.com. Retrieved 22 May 2025.
- ^ "Hotel Wifi JavaScript Injection". JustInsomnia. 3 April 2012. Archived from the original on 18 November 2018. Retrieved 20 October 2018.
- ^ The Tor Project, Inc. "What is Tor Browser?". TorProject.org. Archived from the original on 17 July 2013. Retrieved 30 May 2012.
- ^ Konigsburg, Eitan; Pant, Rajiv; Kvochko, Elena (13 November 2014). "Embracing HTTPS". The New York Times. Archived from the original on 8 January 2019. Retrieved 20 October 2018.
- ^ Gallagher, Kevin (12 September 2014). "Fifteen Months After the NSA Revelations, Why Aren't More News Organizations Using HTTPS?". Freedom of the Press Foundation. Archived from the original on 10 August 2018. Retrieved 20 October 2018.
- ^ "HTTPS as a ranking signal". Google Webmaster Central Blog. Google Inc. 6 August 2014. Archived from the original on 17 October 2018. Retrieved 20 October 2018.
You can make your site secure with HTTPS (Hypertext Transfer Protocol Secure) [...]
- ^ Grigorik, Ilya; Far, Pierre (26 June 2014). "Google I/O 2014 - HTTPS Everywhere". Google Developers. Archived from the original on 20 November 2018. Retrieved 20 October 2018.
- ^ a b c "How to Deploy HTTPS Correctly". 15 November 2010. Archived from the original on 10 October 2018. Retrieved 20 October 2018.
- ^ "HTTP Strict Transport Security". Mozilla Developer Network. Archived from the original on 19 October 2018. Retrieved 20 October 2018.
- ^ "HTTPS usage statistics on top 1M websites". StatOperator.com. Archived from the original on 9 February 2019. Retrieved 20 October 2018.
- ^ "Let's Encrypt Stats". LetsEncrypt.org. Archived from the original on 19 October 2018. Retrieved 20 October 2018.
- ^ "Qualys SSL Labs - SSL Pulse". www.ssllabs.com. 4 December 2022. Archived from the original on 7 December 2022. Retrieved 7 December 2022..
- ^ "TLS 1.3: Slow adoption of stronger web encryption is empowering the bad guys". Help Net Security. 6 April 2020. Archived from the original on 24 May 2022. Retrieved 23 May 2022.
- ^ Eckersley, Peter (17 June 2010). "Encrypt the Web with the HTTPS Everywhere Firefox Extension". EFF blog. Archived from the original on 25 November 2018. Retrieved 20 October 2018.
- ^ "HTTPS Everywhere". EFF projects. 7 October 2011. Archived from the original on 5 June 2011. Retrieved 20 October 2018.
- ^ "HTTPS-Only Mode in Firefox". Archived from the original on 12 November 2021. Retrieved 12 November 2021.
- ^ "Manage Chrome safety and security - Android - Google Chrome Help". support.google.com. Archived from the original on 7 March 2022. Retrieved 7 March 2022.
- ^ Venkat (19 July 2021). "Hands on Chrome's HTTPS-First Mode". Techdows. Archived from the original on 7 March 2022. Retrieved 7 March 2022.
- ^ Singel, Ryan (24 March 2010). "Law Enforcement Appliance Subverts SSL". Wired. Archived from the original on 17 January 2019. Retrieved 20 October 2018.
- ^ Schoen, Seth (24 March 2010). "New Research Suggests That Governments May Fake SSL Certificates". EFF. Archived from the original on 4 January 2016. Retrieved 20 October 2018.
- ^ a b Duncan, Robert (25 June 2013). "SSL: Intercepted today, decrypted tomorrow". Netcraft. Archived from the original on 6 October 2018. Retrieved 20 October 2018.
- ^ Cimpanu, Catalin (12 April 2016). "Let's Encrypt Launched Today, Currently Protects 3.8 Million Domains". Softpedia News. Archived from the original on 9 February 2019. Retrieved 20 October 2018.
- ^ Kerner, Sean Michael (18 November 2014). "Let's Encrypt Effort Aims to Improve Internet Security". eWeek.com. Quinstreet Enterprise. Archived from the original on 2 April 2023. Retrieved 20 October 2018.
- ^ Eckersley, Peter (18 November 2014). "Launching in 2015: A Certificate Authority to Encrypt the Entire Web". Electronic Frontier Foundation. Archived from the original on 18 November 2018. Retrieved 20 October 2018.
- ^ Qualys SSL Labs. "SSL Pulse". Archived from the original (3 February 2019) on 15 February 2019. Retrieved 25 February 2019.
- ^ "Qualys SSL Labs - SSL Pulse". www.ssllabs.com. Retrieved 4 September 2023.
- ^ "Mozilla Firefox Privacy Policy". Mozilla Foundation. 27 April 2009. Archived from the original on 18 October 2018. Retrieved 20 October 2018.
- ^ "Opera 8 launched on FTP". Softpedia. 19 April 2005. Archived from the original on 9 February 2019. Retrieved 20 October 2018.
- ^ Lawrence, Eric (31 January 2006). "HTTPS Security Improvements in Internet Explorer 7". Microsoft Docs. Archived from the original on 24 October 2021. Retrieved 24 October 2021.
- ^ Myers, Michael; Ankney, Rich; Malpani, Ambarish; Galperin, Slava; Adams, Carlisle (20 June 1999). "Online Certificate Status Protocol – OCSP". Internet Engineering Task Force. doi:10.17487/RFC2560. Archived from the original on 25 August 2011. Retrieved 20 October 2018.
- ^ "Baseline Requirements". CAB Forum. 4 September 2013. Archived from the original on 20 October 2014. Retrieved 1 November 2021.
- ^ Korzhitskii, N.; Carlsson, N. (30 March 2021). "Revocation Statuses on the Internet". Passive and Active Measurement. Lecture Notes in Computer Science. Vol. 12671. pp. 175–191. arXiv:2102.04288. doi:10.1007/978-3-030-72582-2_11. ISBN 978-3-030-72581-5.
- ^ "Manage client certificates on Chrome devices – Chrome for business and education Help". support.google.com. Archived from the original on 9 February 2019. Retrieved 20 October 2018.
- ^ Pusep, Stanislaw (31 July 2008). "The Pirate Bay un-SSL" (PDF). Archived (PDF) from the original on 20 June 2018. Retrieved 20 October 2018.
- ^ "SSL/TLS Strong Encryption: FAQ". apache.org. Archived from the original on 19 October 2018. Retrieved 20 October 2018.
- ^ Lawrence, Eric (22 October 2005). "Upcoming HTTPS Improvements in Internet Explorer 7 Beta 2". Microsoft. Archived from the original on 20 September 2018. Retrieved 20 October 2018.
- ^ "Server Name Indication (SNI)". inside aebrahim's head. 21 February 2006. Archived from the original on 10 August 2018. Retrieved 20 October 2018.
- ^ Pierre, Julien (19 December 2001). "Browser support for TLS server name indication". Bugzilla. Mozilla Foundation. Archived from the original on 8 October 2018. Retrieved 20 October 2018.
- ^ "sslstrip 0.9". Archived from the original on 20 June 2018. Retrieved 20 October 2018.
- ^ Shuo Chen; Rui Wang; XiaoFeng Wang; Kehuan Zhang (20 May 2010). "Side-Channel Leaks in Web Applications: a Reality Today, a Challenge Tomorrow". Microsoft Research. IEEE Symposium on Security & Privacy 2010. Archived from the original on 22 July 2018. Retrieved 20 October 2018.
- ^ Guaay, Matthew (21 September 2017). "How to Force a Public Wi-Fi Network Login Page to Open". Archived from the original on 10 August 2018. Retrieved 20 October 2018.
- ^ "NeverSSL".
- ^ "NeverSSL". Archived from the original on 1 September 2018. Retrieved 20 October 2018.
- ^ Walls, Colin (2005). Embedded Software: The Works. Newnes. p. 344. ISBN 0-7506-7954-9. Archived from the original on 9 February 2019. Retrieved 20 October 2018.
- ^ a b "A secure web is here to stay". Chromium Blog. Archived from the original on 24 April 2019. Retrieved 22 April 2019.
- ^ Messmer, Ellen. "Father of SSL, Dr. Taher Elgamal, Finds Fast-Moving IT Projects in the Middle East". Network World. Archived from the original on 31 May 2014. Retrieved 30 May 2014.
- ^ Greene, Tim. "Father of SSL says despite attacks, the security linchpin has lots of life left". Network World. Archived from the original on 31 May 2014. Retrieved 30 May 2014.
- ^ Oppliger, Rolf (2016). "Introduction". SSL and TLS: Theory and Practice (2nd ed.). Artech House. p. 13. ISBN 978-1-60807-999-5. Retrieved 1 March 2018 – via Google Books.
- ^ Rescorla, Eric (May 2000). HTTP Over TLS (Report). Internet Engineering Task Force.
External links
[edit]HTTPS
View on GrokipediaOverview
Definition and Purpose
HTTPS (Hypertext Transfer Protocol Secure) is an extension of the Hypertext Transfer Protocol (HTTP) that secures communications by encapsulating HTTP messages within the Transport Layer Security (TLS) protocol, or its predecessor Secure Sockets Layer (SSL).[10] This layering occurs at the transport level, where TLS provides encryption and related security services to HTTP traffic over TCP port 443 by default, in contrast to HTTP's use of port 80.[10] The protocol was formally specified in RFC 2818 in May 2000, standardizing the use of TLS to protect HTTP connections against interception and modification on public networks.[11] The core purpose of HTTPS is to ensure the confidentiality, integrity, and authenticity of data exchanged between web clients and servers, addressing vulnerabilities inherent in unencrypted HTTP such as eavesdropping, tampering, and impersonation.[1] Confidentiality is achieved through symmetric encryption of the payload, preventing unauthorized parties from reading sensitive information like login credentials or payment details during transit.[12] Integrity is maintained via message authentication codes that detect alterations to the data stream, while authentication relies on digital certificates issued by trusted certificate authorities to verify the server's identity, mitigating man-in-the-middle attacks.[1] These mechanisms collectively enable secure applications such as online banking, e-commerce, and API interactions where data protection is critical.[13] Introduced in the mid-1990s by Netscape Communications as part of their browser and SSL implementation to facilitate secure web transactions, HTTPS addressed the growing need for encrypted e-commerce amid the early internet's expansion.[12] By 2025, over 95% of web pages loaded via major browsers use HTTPS, driven by browser policies enforcing secure connections and search engine rankings favoring encrypted sites.[1] This widespread adoption underscores its role in establishing trust in web ecosystems, though it does not inherently protect against server-side vulnerabilities or client-side threats.[5]Usage in Web Ecosystems
HTTPS permeates web ecosystems through integration in browsers, servers, content delivery networks (CDNs), and application programming interfaces (APIs), enabling encrypted communication as the de facto standard for secure data transfer. As of 2024, 87.6% of websites employed valid SSL certificates, a marked increase from 18.5% six years prior, driven by automated issuance and browser incentives.[14] Projections indicate near-universal adoption, with nearly 99% of sites expected to use HTTPS by the end of 2025, reflecting empirical improvements in encryption coverage across global web traffic.[15] The Let's Encrypt certificate authority, operational since December 2015, has catalyzed this shift by issuing free, short-lived certificates via automated protocols like ACME, eliminating cost and complexity barriers that previously deterred small-scale operators.[16] Over 600 million websites have obtained certificates from Let's Encrypt, doubling the proportion of secure sites within four years of its launch and particularly benefiting resource-constrained domains.[17] This automation fosters routine renewal—certificates expire every 90 days—reducing exposure to prolonged key compromises while embedding HTTPS into hosting platforms and CDNs like Cloudflare, which proxy traffic to enforce encryption.[18] Browsers enforce HTTPS through user interface cues and policy mechanisms; Google Chrome, holding dominant market share, labels HTTP pages as "not secure" since version 68 in 2018 and advances HTTPS-First mode to attempt upgrades for insecure origins by default, suppressing HTTP fallbacks unless explicitly configured otherwise.[19] Similarly, Firefox and Safari display padlock icons for HTTPS connections and block mixed content—unencrypted resources on secure pages—prompting developers to migrate assets fully to HTTPS.[1] HTTP Strict Transport Security (HSTS), defined in RFC 6797, complements this by directing browsers to interact solely via HTTPS for prelisted domains, averting protocol downgrade attacks and cookie hijacking over subsequent visits; preload lists maintained by browser vendors extend this protection network-wide.[20] In server ecosystems, HTTPS deployment involves configuring TLS-terminating proxies or load balancers, with widespread support for forward secrecy protocols ensuring session keys resist retroactive decryption.[1] APIs and microservices architectures increasingly mandate HTTPS to safeguard authentication tokens and payloads, as evidenced by standards like OAuth 2.0 requiring transport-layer security. Despite high adoption, challenges persist in legacy systems and resource-limited environments, where incomplete implementations can expose mixed-content vulnerabilities, underscoring the causal link between comprehensive ecosystem enforcement and realized security gains.[21]Technical Mechanics
Distinctions from HTTP
HTTPS encapsulates HTTP within a Transport Layer Security (TLS) layer, providing encryption, server authentication, and data integrity absent in plain HTTP.[10] While HTTP transmits requests and responses in plaintext over TCP port 80 by default, exposing data to interception, modification, or spoofing, HTTPS mandates TLS negotiation over port 443, ensuring confidentiality through symmetric encryption keys derived during the initial handshake.[22][23] The TLS handshake in HTTPS precedes HTTP message exchange, involving asymmetric cryptography for key exchange—typically Diffie-Hellman or RSA—and certificate validation against trusted certificate authorities to verify server identity, which HTTP lacks entirely.[10] This process authenticates the server, mitigating man-in-the-middle attacks, whereas HTTP connections proceed directly without identity checks or protection against tampering.[24] HTTPS also enforces message integrity via message authentication codes, preventing undetected alterations, in contrast to HTTP's vulnerability to such exploits.[23] Operationally, HTTPS introduces computational overhead from encryption/decryption and the handshake latency—often 1-2 round-trip times—but optimizations like session resumption and hardware acceleration minimize this in modern implementations.[25] HTTP remains faster for initial connections due to its simplicity but forfeits security, making HTTPS the standard for any data-sensitive web traffic as formalized in RFC 2818.[10][26]TLS/SSL Integration and Handshake
HTTPS encapsulates HTTP traffic within a TLS-encrypted channel, replacing the insecure TCP transport used by plain HTTP with TLS's cryptographic protections for confidentiality, integrity, and server authentication. This integration, formalized in RFC 2818 published in May 2000, operates by directing HTTP connections to TCP port 443 and layering TLS beneath the HTTP protocol, allowing unmodified HTTP semantics while securing the underlying data stream against eavesdropping, tampering, and impersonation.[10] TLS, defined starting with version 1.0 in RFC 2246 from January 1999 as an upgrade over SSL 3.0, has evolved through versions 1.1 (RFC 4346, April 2006), 1.2 (RFC 5246, August 2008), and 1.3 (RFC 8446, August 2018), with SSL versions deprecated due to vulnerabilities like POODLE in SSL 3.0 exploited since 2014.[27] The TLS handshake initiates upon connection establishment, negotiating session parameters and deriving symmetric encryption keys before any HTTP data is exchanged, typically adding 1-2 round-trip times (RTTs) of latency in modern implementations. In TLS 1.3, the process authenticates the server and computes shared keys using Diffie-Hellman ephemeral (DHE) or elliptic curve variants for forward secrecy, ensuring compromised long-term keys do not expose past sessions. The client sends a ClientHello message listing supported TLS versions (prioritizing 1.3), cipher suites (e.g., TLS_AES_256_GCM_SHA384 for AES-256-GCM encryption with SHA-384 authentication), extensions like Server Name Indication (SNI) for virtual hosting—which reveals the requested domain name to intermediaries such as ISPs during the handshake unless Encrypted Client Hello (ECH) is used—and a public key share.[27] [28] ECH is a privacy-enhancing extension to TLS that encrypts the entire ClientHello message, including the SNI extension and other sensitive details, preventing passive network observers from determining the destination domain name. As of 2026, ECH has seen increasing adoption since its initial availability in 2023, with support in major browsers such as Firefox and Chrome, and by content delivery networks such as Cloudflare, though deployment remains incomplete and not universal. Even with ECH enabled, ISPs and other intermediaries can still observe the destination IP address, connection metadata including data volume, timing, duration, and port numbers, but cannot access the specific page path, query parameters, form data, or any encrypted content.[29] [30] The server responds with a ServerHello selecting compatible parameters, its key share, EncryptedExtensions for additional options, a certificate chain rooted in a trusted public certificate authority (CA), a CertificateVerify signature proving private key possession, and a Finished message with a MAC verifying handshake integrity using the derived key. The client verifies the certificate against its trust store, computes the shared secret, sends its Finished message, and the session activates for bidirectional encryption of HTTP requests and responses.[27] [31] TLS 1.2 variants include additional explicit key exchange messages like ServerKeyExchange for non-RSA ciphers, increasing RTTs to 2 without resumption, but TLS 1.3 eliminates these for efficiency while mandating forward secrecy.[28] Session resumption mechanisms, such as pre-shared keys (PSK) in TLS 1.3 or session tickets in earlier versions, allow abbreviated handshakes on subsequent connections by reusing prior keys, reducing latency to 0-RTT in some cases while mitigating replay attacks via age and sequence checks. Client authentication, optional and rare in web contexts, can occur via client certificates during the handshake if required by the server.[27] These steps ensure causal security: encryption keys derive solely from ephemeral exchanges unknown to passive observers, and authentication chains to PKI roots vetted by clients, though reliant on CA trustworthiness which has faced breaches like the 2011 DigiNotar compromise affecting millions of certificates.[28]Network Layer Operations
The TLS Record Protocol, operating above the transport layer, fragments outgoing HTTP application data into records of up to 2^14 bytes (16,384 bytes) each, prepends a 5-byte header specifying the content type (such as 23 for application data), TLS version, and length, applies optional compression (deprecated in TLS 1.3), computes a message authentication code (MAC) or authenticated encryption, and encrypts the payload using the negotiated symmetric keys and algorithms from the handshake.[32][33] These records form a byte stream delivered reliably to the peer via TCP on port 443, where TCP segments the stream into variable-sized segments (typically up to the path MTU minus headers, around 1,460 bytes for IPv4 Ethernet) with sequence numbers, acknowledgments, and congestion control to ensure ordered, error-free delivery without duplication or loss. At the network layer (OSI layer 3 or IP layer in TCP/IP), each TCP segment is encapsulated in an IPv4 or IPv6 datagram, adding a 20-byte IPv4 header (or 40-byte IPv6) with source and destination addresses, protocol field (6 for TCP), TTL/hop limit, and checksum, enabling stateless routing through intermediate devices based solely on address prefixes and forwarding tables. Routers inspect only the IP header for next-hop decisions, forwarding packets hop-by-hop without visibility into the encrypted TLS payload, which prevents eavesdropping on the HTTP content—including specific page paths, query parameters, form data, and other application-layer information—but exposes metadata to intermediaries such as ISPs. This metadata includes the destination IP address, port numbers (typically 443), connection timing, duration, data volume, and the domain name via the Server Name Indication (SNI) extension in the TLS ClientHello message unless Encrypted Client Hello (ECH) is used to encrypt it (see TLS/SSL Integration and Handshake).[34] As of early 2026, ECH is supported by major browsers such as Firefox and Chrome as well as CDNs such as Cloudflare, but is not universally deployed, meaning the domain name remains visible to ISPs in many cases. Other privacy technologies such as proxies or Tor are required to obscure the destination IP address and further reduce metadata visibility. Routers and ISPs cannot observe the encrypted content itself. If a datagram exceeds a link's maximum transmission unit (MTU, e.g., 1,500 bytes for standard Ethernet), IP may fragment it into smaller datagrams with offset and more-fragments flags, reassembled at the destination; however, TCP's path MTU discovery (PMTUD) probes effective MTU via ICMP feedback to avoid fragmentation, blackholing, or performance degradation from reassembly overhead. Inbound operations reverse this: IP delivers datagrams to the end system, reassembling fragments if needed before passing TCP segments to the transport layer, where TCP buffers, orders, and retransmits lost segments using cumulative acknowledgments and selective ACKs (SACK) for efficiency. The reassembled TCP stream feeds the TLS Record Protocol, which authenticates and decrypts records using the same keys, verifies integrity via MAC or AEAD tags, reassembles the full HTTP message, and handles any record-layer padding or fragmentation introduced for security (e.g., against traffic analysis via constant record sizes in some implementations).[35] This layered encapsulation ensures HTTPS inherits TCP/IP's robustness for global routing while confining security to end-to-end protection, as network-layer devices remain agnostic to TLS details.[36] In HTTP/3 deployments over QUIC (RFC 9000), which multiplexes streams over UDP for reduced latency, TLS 1.3 integrates directly into QUIC packets sent via IP/UDP datagrams, bypassing TCP's head-of-line blocking; QUIC handles encryption, reliability, and congestion in user space, with IP routing unchanged but UDP's connectionless nature enabling faster handshakes and migration (e.g., via connection IDs). As of mid-2025, TCP-based HTTPS dominates web traffic at approximately 80-90% of secure connections, per server logs from major CDNs, though QUIC adoption grows for performance-critical applications.Implementation Practices
Server Configuration Essentials
To enable HTTPS on a web server, administrators must install a TLS certificate issued by a trusted certificate authority (CA) and its corresponding private key, typically in PEM or DER format, ensuring the private key remains securely protected with appropriate file permissions (e.g., 600 octal).[37][38] The server software is then configured to bind to TCP port 443, activate TLS processing on that socket, and reference the certificate and key paths; for Nginx, this requires thessl directive on the listen statement alongside ssl_certificate and ssl_certificate_key in the server block.[39] Analogous setups apply to Apache via mod_ssl in a <VirtualHost *:443> directive specifying SSLCertificateFile and SSLCertificateKeyFile, or to IIS by creating an HTTPS binding in IIS Manager and assigning the certificate from the server certificate store.[40]
Security hardening mandates restricting protocols to TLS 1.3 as the primary version, with TLS 1.2 as a fallback for compatibility, while explicitly disabling SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.1 due to exploits like POODLE (CVE-2014-3566) and their removal from modern browser support by 2020.[38][41] Cipher suite selection should emphasize forward-secure elliptic curve Diffie-Hellman ephemeral (ECDHE) key exchanges with AES-256-GCM or ChaCha20-Poly1305 for bulk encryption, SHA-384 or higher for hashing, and exclusion of null ciphers, RC4, 3DES, or MD5-based suites vulnerable to attacks such as Lucky Thirteen.[42][43]
All HTTP traffic on port 80 must redirect to HTTPS via permanent (301) status codes to prevent unencrypted access, implemented in Nginx with return 301 https://$host$request_uri; in the non-TLS server block or equivalent rewrite rules in Apache (RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]) and IIS URL Rewrite modules.[39][44] HTTP Strict Transport Security (HSTS, defined in RFC 6797) should be enforced by appending the Strict-Transport-Security: max-age=31536000; includeSubDomains header (extendable to preload lists for broader enforcement), compelling browsers to reject non-HTTPS connections for the specified duration and subdomains.[44][45]
Advanced features include OCSP stapling (per RFC 6066), where the server caches and attaches the CA's signed certificate revocation response during handshakes to minimize client-side queries and latency—enabled in Nginx via ssl_stapling on; and resolver directives, or Apache with SSLUseStapling on.[46] Session resumption via TLS 1.3's pre-shared keys or TLS 1.2 tickets (avoiding vulnerable session IDs) optimizes performance without compromising security.[38] Configurations should be validated using tools like SSL Labs' qualifier, targeting A+ ratings, and updated periodically as protocols evolve, such as the 2025 deprecations of certain TLS 1.2 ciphers in standards like NIST SP 800-52.[43][47]