How to Enable HTTP/2 on IIS?

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...
How to Enable HTTP/2 on IIS

What is HTTP/2?

HTTP/2 is the second version of Hypertext Transfer Protocol (HTTP) which is the backbone of communication on the World Wide Web. HTTP/2 was made available in 2015. It is a significant upgrade designed to address the limitations of its predecessor, HTTP/1.1.

Also Read: HTTP 1 Vs. HTTP 1.1 Vs. HTTP 2: A Detailed Analysis

It provides faster web page download and minimizes the web page and Network layer latency in relation to the usage of the network resources.

It does this by adding features like multiplexing and compression of headers, as well as server push.

This means multiple requests and responses could be transported over this single connection thereby reducing the overhead of conventional HTTP request and response.

How do I use HTTP/2?

Using HTTP/2 involves ensuring that both your web server and clients (such as web browsers) support the protocol and are configured to communicate using it.

Here’s a step-by-step guide on how to use HTTP/2:

Ensure Browser Support

Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari and Opera all support HTTP/2 without the need for additional extension. There is no special action on your browser part; the browser will automatically use the HTTP/2 if your server supports this protocol.

Verify Server Support

  • The first thing that you need to do is to look at the features of your web server software, in this case HTTP/2. While using HTTP/2 some of the common web servers that are in the market are; Apache, Nginx, IIS, LiteSpeed; they all have support for HTTP/2.
  • Check that your server meets the most current update as some of the older versions do not support HTTP/2.

Enable HTTP/2 on Your Server

Apache: In order, to begin with, you have to make sure that the mod_http2 module is installed, as well as enabled on the Apache server.

This can be done with the following lines in the Apache configuration file:

LoadModule http2_module modules/mod_http2.so
Protocols h2 h2c http/1.1

Nginx: To enable HTTP/2 on Nginx, there is paramount modification that is required to the Nginx server block configuration and this includes the use of http2 parameter after the listen function.

server {
            listen 443 ssl http2;
            server_name yourdomain.com;
            # SSL configurations
            # …
}

IIS (Internet Information Services): To clarify, HTTP/2 is on by default across IIS provided that you’re handling your site through HTTPS. In that case, you might need to upgrade your Support Windows Server to a version that has HTTP/2 support which is Support Windows Server 2016 or later.

Use HTTPS

  • HTTP/2 in general is only supported by a secure connection, which is HTTPS. Make sure that all your websites that are prone to take passwords and other sensitive info are protected with an SSL/TLS certificate.
  • This is important because most of the browsers require that HTTP/2 has to be used with the HTTP/1.1 over secure connections for security purposes.

Test Your Configuration

  • Once you have enabled HTTP/2 you are able to use onlinetools like tools.keycdn.com/http2-test or gf.dev/http2 to where you can check if your website is indeed serving content over HTTP/2.
  • However, you can use your web browser’s developer tools that are usually available by pressing the F12 key and check the network requests and they should indicate if the HTTP/2 is in use.

Monitor and Optimize Performance

After enabling HTTP/2 to your site, make sure that work on your site is normal and there is no problem. Since HTTP/2 alters the way data is transferred, you will find that page loading time and overall site responsiveness have been enhanced.

Consider Server Push

HTTP/2 also allows the use of server push whereby the server can prefetch information and make it available for use without the client asking for it. It can also enhance the loading time of the important resources to the client.

Fallback for Non-Supporting Clients

HTTP/2 is backward-compatible with HTTP/1.1. If a client or server does not support HTTP/2, they will automatically fall back to HTTP/1.1. This ensures that your website remains accessible to all users, even those on older systems.

When is HTTP/2 Not Supported?

Old or Incompatible Web Browsers

HTTP/2 is not compatible with all the platforms, especially the outdated versions of web browsers that have not been updated for years.

For instance, IE older than version 11 and other weak versions of browsers such as Firefox, Chrome and Safari do not support HTTP/2.

Also Read: What Is the HTTP/2 Protocol? Difference Between HTTP/1.1 vs HTTP/2 vs HTTP/3

Also, some companies have their browsers customized or created for these and other specific needs of the company, and they can lack the HTTP/2 implementation simply because of that.

Thus the users of such out of date or customized browsers may be faced with this situation where they are transferred to HTTP/1. 1, that is not always convenient from speed and efficient browsing point of view and can result in slower page loading times.

Non-HTTPS Connections

HTTP/2 can, in theory, be used on top of HTTP; yet, the amount of producers supporting the protocol from Chrome to Firefox and up to Safari, is limited to HTTPS-only configurations.

If your website is served over plain HTTP then the browser will be unable to use HTTP/1. 1 instead of HTTP/2. This is so, because browsers are security-minded and only decide to use the new and faster protocol (HTTP/2) if the connection is secure.

Furthermore, in case your site is loaded with mixed content, that is, if some of the resources are loaded through HTTP while the main page is loaded through HTTPS, some browsers might downgrade to HTTP/1.

Essentially, the score of 1 for the entire session, shows that in fact the benefits that can be accrued through HTTP/2 are weak.

Unsupported Web Servers

Some older web servers or the servers that have not been updated might not support HTTP/2.

For instance, older builds of some widely-used servers such as Apache prior to 2. 4. 17, Nginx prior to 1. 9. 5, or Microsoft IIS prior to IIS 10 do not contain sufficient features to meet the HTTP/2 standard.

Although it is possible to configure many known server software to respond to HTTP/2, if some modules are omitted or some settings are not adjusted, HTTP/2 remains disabled.

This implies that websites hosted on such servers shall be limited to using only HTTP/1. 1 and, therefore, does not fully utilize the advantages that HTTP/2 offers, namely, multiplexing and header compression.

Proxy Servers and Middleboxes

Interoperability with HTTP/2 can be impacted with older proxy servers and other network middleboxes like firewall and load balancer that do not properly handle HTTP/2 traffic.

Such devices, commonly used in enterprises, might degrade the connection to HTTP/1. 1 when they are unable to handle the more modern one.

For instance, corporations with heavily regulated firewalls or content scanning mechanisms could experience problems with HTTP/2, and may revert back to HTTP/1. 1 protocol.

This can impact the interactive behaviors of Web applications and their performance and scalability in enterprise environments that frequently employ middleboxes.

CDN and Load Balancer Restrictions

Many CDN and load balancers, those who still support older regions or use cases, may not support HTTP/2 to the fullest.

For example, while using particular CDNs, one may need to add extra settings that allow HTTP/2 usage or may not be able to utilize HTTP/2 at all in some cases or in particular areas.

Likewise, should your site employ a load balancer that does not have HTTP/2 setup or does not support it at all, the connection might go down to HTTP/1. 1.

This can result in low performance especially for websites that require the service to deliver some materials across the globe.

Non-Standard HTTP Methods

HTTP/2 in general supports most of the standard HTTP methods that are currently in use including GET and POST. However, if your application establishes connections using any custom or nonstandard HTTP methods , it might face some problem with HTTP/2.

These use cases might not be completely standard or they can have a deleterious effect upon HTTP/2 connections if they are not fully understood by the server or middle layers of that communication.

This could very much be a problem especially with applications that require special HTTP methods for custom applications or APIs.

Network Interference

There are network conditions that are capable of disrupting HTTP/2 support. This may happen due to poor network conditions, packet loss or due to interference by ISPs that do not fully support HTTP/2 traffic, this results in connections to fall back to HTTP/1. 1.

Also, it is important that some networks distinguish between IPv4 and IPv6 – problems in one protocol will affect HTTP/2 support.

This is all the more useful for individuals located in areas with lower Internet connection stability, where the connection quality temporarily deteriorates and actually degrades users to a slower connection as built-in net traffic balancer instantly recognizes these instabilities.

Custom Implementations

Everything above reflects custom implementations of HTTP/2 in software and devices not conforming to the standard itself, which, in some cases, results in protocol dropping to HTTP/1. 1.

This might occur in some application software or network equipment which had been developed or made for a specific application and has not adopted HTTP/2 completely perhaps due to the lack of use or upgrade.

How to Enable HTTP/2 on IIS?

Enabling HTTP/2 on IIS (Internet Information Services) is a straightforward process that involves a series of steps to install, configure, and secure your web server.

By following these six steps, you can ensure that your server is ready to take advantage of the enhanced performance and efficiency provided by the HTTP/2 protocol.

Step 1: Install Internet Information Services (IIS)

Getting it on Windows 10, click on the Start button, go to the Control Panel and choose Programs and Features; click “Turn Windows Features On or Off.”

In the list, tick the requirements which include selecting Internet Information Services to enable IIS.

Now, if you are working with Windows Server 2016, it’s easier for you to find this option in ‘Server Manager’ >> Add Roles and Features >> Web Server (IIS) in the list of Roles.

The need of performing this step is to make sure that the IIS role is available on the server through which you can manage and configure applications on the Web.

Step 2: Open Internet Services Manager and Install SSL Certificate

Type ‘’IIS Manager’’ in the start, and you will be directed to the program after it has been installed. Under the Connections tab in the left pane select your server name.

Next, locate and click on “Server Certificates” within the middle pane, after that go to the “Actions” pane on the right hand side and click on “Complete Certificate Request”.

This step is necessary since most of the time in order to establish HTTP/2 you need to use HTTPS and to do that, you need to install an SSL certificate.

Note: A very important step that needs to be followed is that the SSL certificate must be installed on the same server that the CSR was created on.

During the generation of CSR the private key is created on the server and it seems to work only when matched with the SSL certificate.

Step 3: Browse and Install the SSL Certificate

In the “Complete Certificate Request” wizard, browse to the location of your SSL certificate file, typically a .cer file.

After selecting the file, provide a “Friendly Name” for the certificate. This name is used to identify the certificate within IIS Manager and does not impact the certificate’s functionality.

Click “OK” to install the SSL certificate on your server. This step completes the process of making the SSL certificate available for use on your web applications.

Step 4: Assign the SSL Certificate to Your Site

After the SSL certificate has been installed, go back to the current IIS Manager window. Under “Connections” find the SSL certificate was installed on the server. Go down up to the “Sites” node and select the site from which you want to enable HTTP/2.

In the right side section known as the “Actions” pane, click on the “Bindings” option This action opens the “Site Bindings” page which deals with the manner in which your site interacts over the network.

Step 5: Add or Edit an HTTPS Binding

Under “Site Bindings,” follow the steps below:

  • In the “Add” or “Edit” field of the “Type” dropdown list, change the drop down from “HTTP” to “HTTPS” From the “IP address” the selection should be “All Unassigned” this makes the server reply to requests on any IP address on the server.
  • It is recommended to set the port to 443 so as to focus solely on the HTTPS traffic which would be the default one for this server.
  • In the “SSL certificate” dropdown, choose the friendly name of the SSL certificate that you added earlier on the process. This step will make your site use an https connection which is required for the HTTP/2.

Step 6: Complete the Setup

After all the binding details have been properly configured, the OK button can be clicked in order to make the changes.

With that, the IIS Manager will change the site to enable the selected SSL certificate for https requests. With these settings configured, your site is ready to make best use of HTTP/2 that will help in getting faster and more efficient communication with the clients.

Conclusion

Looking to enhance your website’s security and performance? CheapSSLWEB offers top-tier SSL certificates and comprehensive solutions to protect your online presence. Whether you’re enabling HTTP/2 for faster load times or securing your data with advanced encryption, CheapSSLWEB has you covered.

Janki Mehta

Janki Mehta

Janki Mehta is a Cyber-Security Enthusiast who constantly updates herself with new advancements in the Web/Cyber Security niche. Along with theoretical knowledge, she also implements her practical expertise in day-to-day tasks and helps others to protect themselves from threats.