The HTTPS-Only Standard - Compliance Guide (2024)

M-15-13 calls for “all publicly accessible Federal websites and web services” to only provide service through a secure connection (HTTPS), and to use HTTP Strict Transport Security (HSTS) to ensure this.

This applies to all public domains and subdomains operated by the federal government, regardless of the domain suffix, as long as they are reachable over HTTP/HTTPS on the public internet.

This page provides implementation guidance for agencies by the White House Office of Management and Budget, as agencies manage their transition to HTTPS.

  • Compliance and best practice checklist
  • Options for HSTS compliance
  • Compliance FAQ
    • What protocols are covered by M-15-13?
    • Do I need to shut off port 80?
    • If plain HTTP is entirely disabled on my server, do I still need HSTS?
    • What about network services that don’t actually serve web content?
    • What does “all Federal agency domains or subdomains” include?
    • What about domains that are only used to redirect visitors to other websites?
    • Do domains that redirect to other external domains need to redirect internally to HTTPS before redirecting externally?
    • What about domains that are technically public, but in practice are only used internally?
    • What happens to visitors using browsers that don’t support HSTS, like older versions of Internet Explorer?
    • This site redirects users to HTTPS – why is Pulse saying it doesn’t enforce HTTPS?
    • Are federally operated certificate revocation services (CRL, OCSP) also required to move to HTTPS?
    • What if I’m using a federally issued certificate – such as from the Federal PKI or Department of Defense – for my web service?

Compliance and best practice checklist

Each public website or web service an agency operates must:

  • Provide service over HTTPS.
  • Automatically redirect HTTP requests to HTTPS, or disable HTTP entirely.
  • Have an HSTS policy in place, through either of the two approaches described below.

Each public website or web service an agency operates should:

  • Follow technical best practices around TLS quality, as demonstrated by https.cio.gov and measured by pulse.cio.gov.
  • Address any mixed content issues that arise from the migration process.
  • Evaluate the viability of dropping support for legacy clients and using modern standards like Server Name Indication.

Options for HSTS compliance

There are a great number of federal websites and web services. To simplify the process of transitioning the federal government to HTTPS, agencies are encouraged to take advantage of HSTS preloading.

Preloading marks entire domains as HTTPS-only, and allows browsers to enforce this rigorously and automatically for every subdomain. Many .gov domains have already implemented HSTS preloading, as have a large number of private sector web services.

Agencies should generally take one of two approaches, on a per-domain basis, to ensure that an HSTS policy is set for all public websites.

Under either approach, web services used by non-browser clients (e.g. APIs) must still individually enforce HTTPS, as HSTS is not supported by non-browser clients.

1. Full HSTS preloading of the parent domain (preferred)

  • The parent domain (e.g. https://agency.gov) has an HSTS policy that includes subdomains and has a max-age of at least 1 year, like this one:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

HSTS preloading a parent domain allows agencies to avoid inventorying and configuring an HSTS policy for every individual subdomain. However, this approach also automatically includes all subdomains present on this domain – including intranet subdomains. All subdomains will need to support HTTPS in order to remain reachable for use in major browsers.

2. Compliance for each individual subdomain

  • The parent domain and each of its publicly reachable subdomains must set an HSTS policy with a max-age of at least 1 year, like this one:
Strict-Transport-Security: max-age=31536000

This approach allows agencies the flexibility to focus only on publicly accessible subdomains, but could entail significantly more work to add an HSTS policy header to each individual website.

Compliance FAQ

Answers to other common compliance questions appear below.

What protocols are covered by M-15-13?

M-15-13 requires secure connections for websites and web services, which means only HTTP-based protocols. This includes all federal websites, as well as federally operated HTTP-based APIs.

M-15-13 does not address the use of DNS or DNSSEC, FTP or SFTP, or any other non-HTTP network protocol.

Do I need to shut off port 80?

No. M-15-13 states:

Allowing HTTP connections for the sole purpose of redirecting clients to HTTPS connections is acceptable and encouraged.

Agencies may employ port 80 for the sole purpose of redirecting clients to a secure connection.

HTTP redirects must use a response code in the 300’s that can reliably cause HTTP clients to perform redirects to an HTTPS URI, such as 301 or 302.

The use of error codes in the 400’s or 500’s will not satisfy this requirement.

Note that while connections to port 80 are insecure, even for redirects, the use of HSTS will instruct supporting HTTP clients to automatically redirect themselves from port 80 to port 443, without attempting to connect to port 80 over the network.

HSTS mitigates the security impact of connections over port 80, while allowing agencies the flexibility to continue redirecting legacy clients or clients which have not yet received an HSTS policy for the target domain.

If plain HTTP is entirely disabled on my server, do I still need HSTS?

Yes. Disabling HTTP support is not sufficient to prevent attacks that downgrade web browsers to plain HTTP.

During an attack, it doesn’t matter whether the “real” server has disabled HTTP. If the client can be coaxed into initiating a plain HTTP connection – such as when a user clicks an http:// link, or types a URL into their browser manually – then a local attacker can respond to that connection attempt from their own server and establish their own connection.

HSTS specifically instructs web browsers to never initiate plain HTTP connections. If a user clicks an http:// link or types in an http:// URL, HSTS causes the browser to first rewrite the URL to use https:// before initiating the connection.

For this reason, HSTS is necessary to effectively prevent downgrade attacks, even if plain HTTP connections are unsupported on the server.

What about network services that don’t actually serve web content?

M-15-13 covers any publicly accessible network service that responds to HTTPS or HTTP requests. This includes network services that don’t serve content, but only return HTTP headers, or blank or insubstantial content.

This also includes services that respond to HTTPS or HTTP requests on non-standard ports (ports other than 80 or 443), whether or not those services are included in external scans provided to agencies.

Network services which do not respond to HTTPS or HTTP requests are not included in the scope of M-15-13.

What does “all Federal agency domains or subdomains” include?

Domains and subdomains, in the context of M-15-13, refer to hostnames that are publicly accessible via HTTP or HTTPS.

Domain refers to hostnames that are directly registerable. Some examples include gsa.gov, whitehouse.gov, dodig.mil, or fs.fed.us.

Subdomain refers to any hostname that is a child of a registerable domain, and may be of any length. Some examples include www.gsa.gov, planthardiness.ars.usda.gov, www.fia.fs.fed.us, or www.usar.army.mil.

Federally operated domains do not all end in .gov, .mil, or .fed.us. Some may end in .com, .org, .us, or other suffixes. Any federally operated domain is covered by M-15-13.

What about domains that are only used to redirect visitors to other websites?

These domains must enable port 443 and use properly configured HTTPS.

They must follow all the same requirements and guidelines as domains used to host websites and APIs, including HSTS and preloading.

Do domains that redirect to other external domains need to redirect internally to HTTPS before redirecting externally?

Not generally, but it is practically required in order to preload a second-level domain.

For example, it is not required by M-15-13 to redirect from http://example.gov:80 to https://example.gov:443 before redirecting to https://another-example.gov:443. However, doing so enables the connecting client to see and cache the HSTS header on example.gov, which it may not otherwise see.

However, doing an internal redirect first is required to automatically preload second-level domains, and so this practice is recommended for second-level domains.

What about domains that are technically public, but in practice are only used internally?

M-15-13 includes all domains and subdomains that are publicly reachable over HTTP/HTTPS, regardless of agency operational practices.

What happens to visitors using browsers that don’t support HSTS, like older versions of Internet Explorer?

Browsers that don’t support HSTS are simply unaffected by HSTS, so there is no harm in enabling it.

This site redirects users to HTTPS – why is Pulse saying it doesn’t enforce HTTPS?

Pulse looks for server-side redirects, using an appropriate HTTP response code. Sites that use client-side redirects – such as a <meta refresh> tag or JavaScript – will not be seen as redirects. To meet the M-15-13 requirement of enforcing HTTPS, agencies should employ server-side redirects (or alternatively, disable HTTP access altogether).

Sites that are reachable on both a root domain (http://agency.gov) and their www subdomain (http://www.agency.gov) should perform a redirect to HTTPS in both cases. Redirecting one but not the other could also cause Pulse to indicate that a domain does not enforce HTTPS.

Are federally operated certificate revocation services (CRL, OCSP) also required to move to HTTPS?

No. This very narrow class of services, that provide CRL and OCSP information for the purposes of verifying the revocation status of certificates used to make other HTTPS connections, should abide by best practices in the field and their respective specifications.

For CRL, RFC 5280 says:

CAs SHOULD NOT include URIs that specify https, ldaps, or similar schemes in extensions. CAs that include an https URI in one of these extensions MUST ensure that the server's certificate can be validated without using the information that is pointed to by the URI. Relying parties that choose to validate the server's certificate when obtaining information pointed to by an https URI in the cRLDistributionPoints, authorityInfoAccess, or subjectInfoAccess extensions MUST be prepared for the possibility that this will result in unbounded recursion.

For OCSP, RFC 6960 says:

Where privacy is a requirement, OCSP transactions exchanged using HTTP MAY be protected using either Transport Layer Security/Secure Socket Layer (TLS/SSL) or some other lower-layer protocol.

Agencies are encouraged to operate OCSP and CRL services via hostnames specifically reserved for those services, so that other related information and functionality can be served securely and privately.

What if I’m using a federally issued certificate – such as from the Federal PKI or Department of Defense – for my web service?

There are no restrictions on acceptable certificate authorities agencies might use to meet the requirements of M-15-13.

However, M-15-13 requires agencies to do more than just redirect HTTP traffic to HTTPS. It also requires agencies to enable HTTP Strict Transport Security (HSTS), as described above. HSTS ensures that HTTPS is always used, and protects users from several common vulnerabilities.

One important effect of HSTS is that it disables the ability for users to click through certificate warnings in supporting browsers. This means that agencies cannot instruct users to click through certificate warnings to use their web service while also complying with M-15-13.

This is also consistent with security best practices, as instructing users to click through certificate warnings defeats the point of HTTPS, and will subject users to potential network attacks.

In practice, to deploy HSTS while using federally issued certificates, an agency will likely need to separate its web services by hostname, based on their expected audience:

  • Federally issued certificates may be practical for web services whose users can be consistently expected to trust the issuing federal certificate authority (CA). Users whose devices do not trust the issuing CA will experience a connection failure and be unable to use the web service.
  • Federally issued certificates will not be practical for web services whose users may not always be expected to trust the issuing federal certificate authority. These web services will likely require the use of a certificate from a publicly trusted (commercial) CA.

Whatever strategy an agency employs to manage the use of federally issued certificates, it should allow the practical deployment of HSTS across all of its publicly accessible websites and web services.

The HTTPS-Only Standard - Compliance Guide (2024)

FAQs

Should all web sites always use HTTPS instead of non secure HTTP? ›

HTTPS is Better for Site Security

Security is one of the biggest things search engines look at when ranking websites. That's why Google announced HTTPS is one of the ranking signals they use in their algorithm. This is one of the most significant advantages HTTPS has over HTTP when it comes to SEO.

What are the requirements for HTTPS? ›

To use HTTPS with your domain name, you need a SSL or TLS certificate installed on your website. Your web host (Web Hosting Provider) may offer HTTPS security or you can request a SSL/TLS certificate from Certificate Authorities and install it yourself. SSL/TLS certificates may need to be renewed periodically.

How to ensure that all links are accessible over HTTPS only? ›

Enable HTTPS: Enabling HTTPS ensures that all traffic between the user's browser and the website's server is encrypted. You can do this by configuring their server to redirect all HTTP requests to HTTPS.

Does HTTPS mean a website is safe? ›

A secure URL should begin with “https” rather than “http.” The “s” in “https” stands for secure, which indicates that the site is using a Secure Sockets Layer (SSL) Certificate. This lets you know that all your communication and data is encrypted as it passes from your browser to the website's server.

What happens if you don't use HTTPS? ›

Without HTTPS, any data passed is insecure. This is especially important for sites where sensitive data is passed across the connection, such as ecommerce sites that accept online card payments, or login areas that require users to enter their credentials.

Is HTTPS really necessary? ›

HTTPS uses the SSL/TLS protocol to encrypt communications so that attackers can't steal data. SSL/TLS also confirms that a website server is who it says it is, preventing impersonations. This stops multiple kinds of cyber attacks (just like food safety prevents illness).

What is HTTPS standards? ›

HTTPS verifies the identity of a website or web service for a connecting client, and encrypts nearly all information sent between the website or service and the user. Protected information includes cookies, user agent details, URL paths, form submissions, and query string parameters.

Do all websites use HTTPS? ›

There are several reasons why HTTPS is not used for all web traffic: Cost: Implementing HTTPS requires an SSL or TLS certificate, which can be expensive for some organizations. Smaller websites may not have the budget to purchase and maintain a certificate.

Do all websites support HTTPS? ›

But while HTTPS does guarantee that your communication is private and encrypted, it doesn't guarantee that the site won't try to scam you. Because here's the thing: Any website can use HTTPS and encryption.

How do I make HTTPS more secure? ›

The difference between HTTP and HTTPS is the “S”, which stands for “Secure”. A website that uses HTTP provides a much less secure connection and endangers customer data. To secure your website with HTTPS, you will need to install an SSL certificate and redirect HTTP to HTTPS using a . htaccess file.

How do I force all traffic to HTTPS? ›

Redirecting HTTP to HTTPS
  1. Redirect All Web Traffic. If you have existing code in your .htaccess, add the following: RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]
  2. Redirect Only a Specific Domain. ...
  3. Redirect Only a Specific Folder.
Jun 13, 2019

How do I force all HTTP to HTTPS? ›

You can activate the feature to force HTTPS on all incoming traffic by following these steps:
  1. Go to File Manager in your hosting panel and open . htaccess inside the public_html folder. If you can't locate it, make sure to create or unhide it.
  2. Save the changes.
May 7, 2023

What does HTTPS not protect? ›

What information does HTTPS not protect? While HTTPS encrypts the entire HTTP request and response, the DNS resolution and connection setup can reveal other information, such as the full domain or subdomain and the originating IP address, as shown above.

What is an example of HTTPS? ›

Examples of HTTPS websites are shopping websites, banking websites, etc.

How do you check my website is secure or not? ›

Chrome will alert you if you can't visit the site safely or privately.
  1. In Chrome, open a web page.
  2. To check a site's security, to the left of the web address, check the security status symbol: Secure. Info or Not secure. ...
  3. To find a summary of the site's privacy details and permissions, select the security symbol.

Why do some websites not use HTTPS? ›

This indicates the web page is not providing a secure connection to visitors. When your browser connects to a website, it can either use the secure HTTPS or the insecure HTTP protocol. If a site's URL begins with HTTP, it means the connection is insecure, which triggers the “Not Secure” warning.

What are the two types of HTTPS? ›

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.

What is difference between HTTP and HTTPS? ›

HTTPS is more secure than HTTP because it uses encryption to protect information as it is being sent between clients and servers. When an organization enables HTTPS, any information you transmit, like passwords or credit card numbers, will be difficult for anyone to intercept.

Which browser uses HTTPS? ›

In Chrome, the Speech Recognition API, which requires access to the microphone as a prerequisite, also requires HTTPS. While not explicitly required in the HTTP/2 standard, every major browser ( Chrome, Firefox, Safari, and Edge) require HTTPS for HTTP/2.

Does HTTPS make any website secure 100% Why? ›

HTTPS is HTTP with encryption and verification. The only difference between the two protocols is that HTTPS uses TLS (SSL) to encrypt normal HTTP requests and responses, and to digitally sign those requests and responses. As a result, HTTPS is far more secure than HTTP.

What attacks does HTTPS protect against? ›

HTTPS is the secure version of HTTP. The protocol protects users against eavesdroppers and man-in-the-middle (MitM) attacks. It also protects legitimate domains from domain name system (DNS) spoofing attacks.

Is HTTPS always encrypted? ›

4. So, Are HTTPS URLS Encrypted? Yes, the full URL string is hidden, and all further communication, including the application-specific parameters. However, the Server Name Indicator that is formed from the hostname and domain name part of the URL is sent in clear text during the first part of the TLS negotiation.

Why is my website not redirecting to HTTPS? ›

If your site requires custom code to force the redirect to HTTPS, you will need to update a configuration file for your domain on the server. The name and location of the custom configuration file is different depending on what type of server your site is running on. This would either be Apache or Nginx.

What is HTTPS only mode? ›

The HTTPS-Only Mode forces all connections to websites to use a secure encrypted connection called HTTPS. Most websites already support HTTPS; some support both HTTP and HTTPS. Enabling this mode guarantees that all of your connections to websites are upgraded to use HTTPS and hence secure.

How do I always use HTTPS in Chrome? ›

Turn on HTTPS-First mode
  1. Open Chrome .
  2. At the top right, tap More. Settings.
  3. Tap Privacy and Security.
  4. Tap Security.
  5. Turn on Always use secure connections.

How do I set https everywhere in Chrome? ›

Use the HTTPS Everywhere plugin on Google Chrome
  • Go to Home in the Chrome web store.
  • Go to Extensions.
  • Go to HTTPS Everywhere.
  • Click “Add to Chrome.”
Mar 30, 2021

How do I enable HTTPS only? ›

How to enable Chrome HTTPS-Only mode
  1. Open a Google Chrome browser.
  2. Click on the menu ⋮ at the top right corner and select Settings.
  3. Click on Security in the Privacy and security tab.
  4. Scroll down to Advanced Settings and switch the toggle button by Always use secure connections to On.
Mar 13, 2023

Can anyone read your data over the internet if you use HTTPS? ›

If a website uses HTTPS, all of this information is hidden from your ISP. All it can see is that you have visited the website — not what you do on it. And because the connection between your browser and the web server is encrypted, your data is secure against third parties.

Is it possible to decrypt HTTPS traffic? ›

You can decrypt forwarded SSL traffic by uploading the private key and server certificate associated with that traffic. The certificate and key are uploaded over an HTTPS connection from a web browser to the ExtraHop system. After upload, private keys are encrypted and stored on the ExtraHop system.

How does HTTPS work for dummies? ›

HTTPS occurs based upon the transmission of TLS/SSL certificates, which verify that a particular provider is who they say they are. When a user connects to a webpage, the webpage will send over its SSL certificate which contains the public key necessary to start the secure session.

What are the 3 common message types in HTTP HTTPS? ›

There are four types of HTTP message headers:
  • General-header: These header fields have general applicability for both request and response messages.
  • Request-header: These header fields have applicability only for request messages.
  • Response-header: These header fields have applicability only for response messages.

What are HTTPS methods? ›

The most commonly used HTTP request methods are GET, POST, PUT, PATCH, and DELETE.

How do I know if HTTPS is enabled? ›

The easiest way to know if a site is SSL encrypted or not is to check its URL. The URL of the site should start with HTTPS. For more details about the site's security credentials, you can click on the padlock icon near the address bar and get more information on the site's SSL certificate details.

Why does my website say not secure? ›

If you're seeing the Not Secure error, it likely means that your site doesn't have an SSL certificate and is not using the HTTPS protocol. The notification does not mean that your site is compromised or not functioning correctly.

Do all websites need to be HTTPS? ›

So for the sake of managing your online reputation, you need to be using HTTPS. This is especially true if you're collecting sensitive information like names, addresses, and credit card data. Even if you're not processing credit cards, other types of websites legally need to keep user information safe.

When should you use HTTPS instead of HTTP? ›

HTTPS is HTTP with encryption and verification. The only difference between the two protocols is that HTTPS uses TLS (SSL) to encrypt normal HTTP requests and responses, and to digitally sign those requests and responses. As a result, HTTPS is far more secure than HTTP.

Does it matter if you use HTTP or HTTPS? ›

HTTPS is more secure than HTTP because it uses encryption to protect information as it is being sent between clients and servers. When an organization enables HTTPS, any information you transmit, like passwords or credit card numbers, will be difficult for anyone to intercept.

Why HTTPS is not always secure? ›

While the majority of websites have already migrated to HTTPS, HTTPS sites can still be labeled as not secure. There are two main ways that this can happen: Calls to non-secure 3rd party resources like images, Javascript, and CSS. Expired, missing, or invalid SSL certificates.

What does not HTTPS protect against? ›

What information does HTTPS not protect? While HTTPS encrypts the entire HTTP request and response, the DNS resolution and connection setup can reveal other information, such as the full domain or subdomain and the originating IP address, as shown above.

Why HTTPS not used for all web traffic? ›

There are several reasons why HTTPS is not used for all web traffic: Cost: Implementing HTTPS requires an SSL or TLS certificate, which can be expensive for some organizations. Smaller websites may not have the budget to purchase and maintain a certificate.

What are the advantages and disadvantages of HTTPS? ›

Difference Between HTTPS vs HTTP
HTTPSHTTP
Data protectionNo protection from attackers
Ranking Boost with GoogleNo ranking boost
Protection against PhishingEasy to replicate and thus vulnerable to phishing
Leveraged to gain customer trustWebsite safety cannot be leveraged
7 more rows
Sep 6, 2019

Why do we still use HTTPS? ›

HTTPS is now 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.

Is Google HTTP or HTTPS? ›

But, since Google is HTTPS, this doesn't happen. This doesn't mean that HTTP isn't insecure.

Why does Chrome keep telling me websites are not secure? ›

The reason you are seeing the “Not Secure” warning is because the web page or website you are visiting is not providing an encrypted connection. When your Chrome browser connects to a website it can either use the HTTP (insecure) or HTTPS (secure).

Why is Chrome telling me every website is unsafe? ›

This is due to an issue with security certificates, and many times is not the fault of your computer or your web browser at all. These certificates are what websites use to prove they are who they say they are on the internet, and if your browser detects an issue with a certificate, it will issue a warning.

Why is Google not HTTPS? ›

Put simply, Google doesn't want to take any chance with HTTP connection as it's insecure and third-party can intercept data transmitted in between, such as transferring of data between users and website servers.

References

Top Articles
Latest Posts
Article information

Author: Sen. Emmett Berge

Last Updated:

Views: 6279

Rating: 5 / 5 (80 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Sen. Emmett Berge

Birthday: 1993-06-17

Address: 787 Elvis Divide, Port Brice, OH 24507-6802

Phone: +9779049645255

Job: Senior Healthcare Specialist

Hobby: Cycling, Model building, Kitesurfing, Origami, Lapidary, Dance, Basketball

Introduction: My name is Sen. Emmett Berge, I am a funny, vast, charming, courageous, enthusiastic, jolly, famous person who loves writing and wants to share my knowledge and understanding with you.