2. Server Name Indication
In previous versions of IIS, you could use host headers to support hosting multiple HTTP websites using only a single shared IP
address. But if you wanted these websites to use Hypertext Transfer
Protocol Secure (HTTPS), then you had a problem because you couldn’t
use host headers. The reason is that host headers are defined at the
application level of the networking stack, so when an incoming HTTPS
request containing a host header comes to a web server hosting multiple
SSL-encrypted websites, the server can’t read the host header unless it
decrypts the request header first. To decrypt the request header, the
server needs to use one of the SSL
certificates assigned to the server. Now, typically you have one
certificate for each HTTPS site on the server, but which certificate
should the server use to decrypt the header? The one specified by the
host header in the incoming request. But the request is encrypted, so
you basically have a chicken-and-egg problem.
The recommended solution in previous versions of IIS was to assign multiple IP addresses to your web server and bind a different IP address to each HTTPS site. By doing this, host headers are no longer needed, and IIS can determine which SSL
certificate to use to decrypt an incoming HTTPS request. If your web
server hosts hundreds (or even thousands) of different HTTPS websites,
however, this means that you’ll need hundreds or thousands of different
IP addresses assigned to the network adapter of your server. That’s a
lot of management overhead—plus you may not have that many IP addresses
available.
IIS 8 in Windows Server 2012 solves this problem by providing support for Server
Name Indication (SNI), which allows a virtual domain name (another name
for a host name) to be used to identify the network end point of an
SSL/TSL connection. The result is that IIS can now host multiple HTTPS
websites, each with their own SSL certificate, bound to the same shared
IP address. SNI
therefore provides the key benefit of increased scalability for web
servers hosting multiple SSL sites, and it can help cloud hosting
providers better conserve the dwindling resources of their pool of
available IP addresses.
Both the server and client need to support SNI, and most newer browsers support SNI as well. Note, however, that Microsoft Internet Explorer 6 doesn’t support it.
SNI can be configured on a per-site basis by editing the bindings for each HTTPS site from the IIS Manager console. Simply select the Require Server Name Indication check box as shown in Figure 2
and type a host name for the site, while leaving the IP Address setting
as All Unassigned to use the single shared IP address on the server.