Server Name Indication
Server Name Indication ( SNI ) is an extension of the Transport Layer Security (TLS) standard , which enables several websites from different domains that can be accessed in encrypted form to share a server on TLS port 443, even if it only has one IP address . When establishing a TLS connection, the client that established the connection requests a digital certificate from the server , which is required to encrypt the connection. The server sends back the certificate by default associated with its IP address. In order to operate a server for different hosts with different certificates under one IP address , it is necessary for the client to inform the server of the desired host before the certificate is transmitted, i.e. before an encrypted channel has been established over the connection. SNI is an extension of TLS that allows the client to transmit this information unencrypted .
background
In order to check the authenticity of a website on the Internet as a user , digital certificates are usually used . Since the encrypted connection to the server is established before the requested URL is transmitted , it is not possible to use multiple domains under one IP address with TLS 1.0 / SSL encryption (so-called virtual hosting ). The reason for this restriction is that if there are several certificates, the server does not know which certificate, which is usually only valid for one domain, it should use. At the time of the specification of SSL / TLS the possibility of virtual hosting was not provided.
Procedure
In the extended SNI procedure, the browser transfers the domain name in the so-called server_name parameter to the server when the connection is established so that the server can select the appropriate certificate and use it for the TLS handshake .
So-called “wildcard certificates” with a canonical name like here * .wikipedia.org include any name in a domain. A certificate can also contain alternative names. Certificate providers charge higher fees for such certificates.
safety
The server_name parameter is transmitted unencrypted and can therefore easily be spied on by a third party who can eavesdrop on the connection. Under certain circumstances, this reveals more information than SSL / TLS without SNI, since the subsequently transmitted server certificate also contains the domain (s) for which it was issued in plain text. If the certificate is valid for several domains or is a wildcard certificate, the spying person would not find out the complete host name requested without the SNI.
Regardless of SSL / TLS and the HTTP protocol, third parties can also find out about the queried domain, since the domain must be resolved using DNS or DNSSEC to establish the connection . The full domain name (including the subdomain) is usually transmitted unencrypted. There are approaches to solving this problem with DNS over TLS or DNS over HTTPS .
In the case of many, especially larger, websites, it is also possible to use the IP address called up , as this cannot be encrypted due to the system. In the case of medium-sized websites, this is at least not possible for subdomains if they are on the same server.
Supported software
software | Type | Supported | Remarks | Supported since |
---|---|---|---|---|
Firefox | Web browser | Yes | From version 2.0 | 2006 |
Chrome | Web browser | Yes | Since 6.0 | 2010 |
Internet Explorer | Web browser | Yes | From version 7 from Windows Vista | 2006 |
Microsoft Edge | Web browser | Yes | 2015 | |
Opera | Web browser | Yes | From version 8.0 | 2005 |
safari | Web browser | Yes | From version 3.2.1 from Mac_OS_X_Leopard 10.5.6 or Windows Vista | 2008 |
ELeft | Web browser | No | Not until version 0.12pre6 | |
Android browser | Mobile browser | Yes | Honeycomb (3.x) for tablets and Ice Cream Sandwich (4.x) for smartphones | 2011 |
Mozilla Firefox Mobile | Mobile browser | part | Firefox Sync does not support SNI | |
Blackberry OS | Mobile browser | Yes | From version 10 | 2013 |
Windows Phone | Mobile browser | Yes | From version 7 | 2010 |
Nokia Browser for Symbian | Mobile browser | No | ||
Safari on iOS | Mobile browser | Yes | Since iOS 4 | 2010 |
(Mini & Mobil Operae ) | Mobile browser | Yes | From version 10.1 on Android | 2010 |
IBM HTTP Server | Web server | Yes | From version 9.0.0 | 2016 |
Apache Tomcat | Web server | Yes | From version 8.5 | 2016 |
Apache HTTP Server | Web server | Yes | From version 2.2.12 | 2009 |
Microsoft IIS | Web server | Yes | From version 8 | 2012 |
Lighttpd | Web server | Yes | From version 1.4.24, or with SNI patch | 2009 |
Nginx | Web server | Yes | From version 0.5.23 | 2007 |
Jetty | Web server | Yes | From version 9.3.0 | 2015 |
HCL Domino | Web server | Yes | From version 11.0.1 | 2020 |
Hiawatha | Web server | Yes | From version 8.6 | 2012 |
cURL | Command line tool and library | Yes | From version 7.18.1 | 2008 |
wget | Command line tool | Yes | From version 1.14 | 2012 |
Qt | Library | Yes | From version 4.8 | 2011 |
Mozilla NSS server side | Library | No | ||
4th dimension | Library | No | Not until version 15.2 | |
Java | Library | Yes | From version 1.8 | 2014 |
ColdFusion / Lucee | Library | Yes | ColdFusion from Version 10 Update 18, 11 Update 7, Lucee from Version 4.5.1.019, Version 5.0.0.50 | 2015 |
Erlang | Library | Yes | From version r17 | 2013 |
Go | Library | Yes | From version 1.4 | 2011 |
Pearl | Library | Yes | Since Net::SSLeay version 1.50 and IO::Socket::SSL version 1.56 |
2012 |
PHP | Library | Yes | From version 5.3 | 2014 |
python | Library | Yes | From version 2.7.9rc1 (2.x) and 3.2alpha4 (3.x) (in ssl , urllib[2] and httplib ) |
2011 (3.x), 2014 (2.x) |
Ruby | Library | Yes | From version 2.0 (in net/http ) |
2011 |
Norms and standards
Initially, Server Name Indication (SNI) was an optional protocol extension from TLS 1.0 from 1999 and has been improved and expanded several times:
- RFC 3546 Transport Layer Security (TLS) Extensions, Chapter 3.1 [2003, obsolete]
- RFC 4366 Transport Layer Security (TLS) Extensions, Chapter 3.1 [2006, obsolete]
- RFC 6066 Transport Layer Security (TLS) Extensions: Extension Definitions, Chapter 3 [2011, currently with additions from RFC 8446 from 2018]
Since TLS 1.3 of 2018, SNI has been part of the basic functional scope of TLS.
Web links
Individual evidence
- ↑ Does Domino HTTP allow SSL certificates with SubjectAltName? IBM , accessed October 2, 2016 .
- ↑ a b c d e Server Name Indication (SNI). IBM, accessed October 2, 2016 .
- ↑ IIS 8 and IIS 8.5 SNI Browser Support . DigiCert. Accessed December 31, 2015.
- ↑ http://code.google.com/p/android/issues/detail?id=12908#c15
- ↑ https://bugzilla.mozilla.org/show_bug.cgi?id=765064
- ↑ http://blogs.msdn.com/b/kaushal/archive/2012/09/04/server-name-indication-sni-in-iis-8-windows-server-2012.aspx
- ↑ http://langui.sh/2010/06/08/sni-in-ios-4-0/
- ↑ IBM HTTP Server SSL Questions and Answers . Publib.boulder.ibm.com. Retrieved March 8, 2011.
- ↑ IHS 8 powered by Apache 2.2.x? . Publib.boulder.ibm.com. Retrieved March 8, 2011.
- ↑ http://www.lighttpd.net/2009/10/25/1-4-24-now-with-tls-sni-and-money-back-guarantee
- ↑ # 386 (TLS servername extension (SNI) for name-based TLS-vhosts)
- ↑ https://www.hiawatha-webserver.org/changelog
- ↑ Implement TLS Server Name Indication for servers . Bugzilla @ Mozilla. November 11, 2006. Retrieved October 30, 2012.
- ↑ See RFC 8446 , Chapter 9.2 Mandatory-to-Implement Extensions.