Server Name Indication

from Wikipedia, the free encyclopedia

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::SSLeayversion 1.50 and IO::Socket::SSLversion 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

  1. Does Domino HTTP allow SSL certificates with SubjectAltName? IBM , accessed October 2, 2016 .
  2. a b c d e Server Name Indication (SNI). IBM, accessed October 2, 2016 .
  3. IIS 8 and IIS 8.5 SNI Browser Support . DigiCert. Accessed December 31, 2015.
  4. http://code.google.com/p/android/issues/detail?id=12908#c15
  5. https://bugzilla.mozilla.org/show_bug.cgi?id=765064
  6. http://blogs.msdn.com/b/kaushal/archive/2012/09/04/server-name-indication-sni-in-iis-8-windows-server-2012.aspx
  7. http://langui.sh/2010/06/08/sni-in-ios-4-0/
  8. IBM HTTP Server SSL Questions and Answers . Publib.boulder.ibm.com. Retrieved March 8, 2011.
  9. IHS 8 powered by Apache 2.2.x? . Publib.boulder.ibm.com. Retrieved March 8, 2011.
  10. http://www.lighttpd.net/2009/10/25/1-4-24-now-with-tls-sni-and-money-back-guarantee
  11. # 386 (TLS servername extension (SNI) for name-based TLS-vhosts)
  12. https://www.hiawatha-webserver.org/changelog
  13. Implement TLS Server Name Indication for servers . Bugzilla @ Mozilla. November 11, 2006. Retrieved October 30, 2012.
  14. See RFC 8446 , Chapter 9.2 Mandatory-to-Implement Extensions.