Indicación de nombre de servidor

Ir a: navegación, búsqueda de

Indicación de nombre de servidor (SNI) es una extensión para el TLS Protocolo[1] indica a qué nombre de host del cliente está intentando conectar al inicio del proceso del apretón de manos. Esto permite que un servidor presentar varios certificados en la misma dirección IP y Puerto número y por lo tanto, permite múltiples (seguro)HTTPS) sitios web (o cualquier otro Servicio sobre TLS) para ser servido en la misma dirección IP sin necesidad de que todos esos sitios para utilizar el mismo certificado. Es el equivalente conceptual a Hosting virtual HTTP/1.1 para HTTPS.

Para hacer uso de SNI práctico, es necesario que la gran mayoría de los usuarios usa navegadores que lo soporten. Los usuarios cuyos navegadores no soportan SNI se presentará con un certificado predeterminado y por lo tanto, son propensos a recibir advertencias de certificado, a menos que el servidor está equipado con un certificado wildcard coincide con el nombre de la Página Web.

Contenido

  • 1 Antecedentes del problema
  • 2 ¿Cómo SNI soluciona el problema
  • 3 Apoyo
    • 3.1 Navegadores compatibles con indicación de nombre de servidor TLS[6]
    • 3.2 Servidores
    • 3.3 Bibliotecas
  • 4 No hay soporte
    • 4.1 Del lado del cliente
    • 4.2 Del lado del servidor
    • 4.3 Bibliotecas
  • 5 Referencias
  • 6 Enlaces externos

Antecedentes del problema

Cuando hacer una conexión TLS el cliente solicita un certificado digital desde el servidor web; una vez que el servidor envía el certificado, el cliente examina y compara el nombre trataba de conectarse con los nombres incluidos en el certificado. Si la conexión se encuentra una coincidencia procede como normal. Si no se encuentra una coincidencia, el usuario puede estar advertido de la discrepancia y la conexión puede ser abortada como el desajuste puede indicar un intento ataque Man-in-the-middle. Sin embargo, algunas aplicaciones permiten al usuario eludir la advertencia para proceder a la conexión con el usuario asumir la responsabilidad de confiar en el certificado y, por extensión, la conexión.

Es posible que un certificado cubrir múltiples nombres de host. El X.509 Especificación V3 introducida el subjectAltName campo que permite un certificado especificar más de un dominio y el uso de comodines en tanto el nombre común y subjectAltName campos. Sin embargo puede ser poco práctico — o incluso imposible, debido a la falta de una lista completa de todos los nombres de antemano — obtener un certificado único que cubre todos los nombres de un servidor será responsable. Como tal, un servidor que es responsable de múltiples nombres de host es probable que deberán presentar un certificado diferente para cada nombre (o un pequeño grupo de nombres). Desde 2005, CAcert ha funcionado experimentos sobre distintos métodos de usar TLS en servidores virtuales.[2] La mayoría de los experimentos es insatisfactorias y poco práctico. Por ejemplo, es posible utilizar subjectAltName para contener varios dominios controlados por una sola persona[3] en un solo certificado. Estos "certificados de las comunicaciones unificadas" deben ser reeditadas cada vez que cambia la lista de dominios.

Hosting virtual basado en nombres permite múltiples nombres de host DNS a ser conducido por un único servidor (generalmente un servidor web) en la misma dirección IP. Para lograr esto, el servidor utiliza un nombre de host presentado por el cliente como parte del protocolo (para HTTP el nombre se presenta en el encabezado de host). Sin embargo cuando usando HTTPS, el protocolo de enlace TLS pasa antes el servidor ve cualquier encabezado HTTP. Por lo tanto no es posible utilizar la información en el encabezado de host HTTP para decidir cual certificado a nombres presentes y como tal sólo cubiertos por el mismo certificado puede ser servido desde la misma dirección IP del servidor.

En la práctica, esto significa que un servidor HTTPS puede servir sólo un dominio (o pequeño grupo de dominios) por dirección IP para la navegación segura. Asignar una dirección IP separada dirección para cada sitio aumenta el costo de alojamiento desde solicitudes para direcciones IP deben estar justificados a la registro regional de internet y las direcciones IPv4 son ahora escasos. El resultado es que muchos sitios web se impida eficazmente mediante comunicaciones seguras.

¿Cómo SNI soluciona el problema

Una extensión a TLS llamado Indicación de nombre de servidor (SNI) soluciona este problema enviando el nombre del dominio virtual como parte de la negociación TLS.[4] Esto permite que el servidor seleccionar el correcto dominio virtual temprano y presentar el navegador con el certificado que contiene el nombre correcto. Por lo tanto con los clientes y los servidores que admiten SNI, una única dirección IP puede utilizarse para servir a un grupo de nombres de dominio para el cual no es práctico para obtener un certificado común.

SNI fue agregado a las IETFes Internet RFC en junio de 2003 a través de RFC 3546, Transporte Layer Security (TLS) extensiones. Es la última versión de la norma RFC 6066.

Apoyo

En 2004, un parche para agregar TLS/SNI en OpenSSL fue creado por el proyecto EdelKey.[5] En 2006, este parche fue luego portado a la rama de desarrollo de OpenSSL, y en 2007 fue detrás-portado a OpenSSL 0.9.8.

Para apoyar a SNI la biblioteca TLS utilizada una aplicación debe apoyarla y la aplicación debe pasar el nombre de host a la biblioteca TLS. Para complicar aún más la biblioteca TLS puede enviarse ya sea como parte de la aplicación o puede ser un componente del sistema operativo. Como resultado de esta algunos navegadores apoyo SNI en todos los sistemas operativos mientras que otros sólo lo apoyan en un subconjunto de los sistemas operativos.

Navegadores compatibles con indicación de nombre de servidor TLS[6]

  • Internet Explorer 7 o más adelante, en Windows Vista o superior. No hay soporte para cualquier versión de Internet Explorer en Windows XP Porque SNI depende de la SChannel componente del sistema de fábrica con Windows Vista.[7]
  • Mozilla Firefox 2.0 o posterior
  • Ópera 8.0 (2005) o posterior (el protocolo TLS 1.1 debe estar habilitado)[8]
  • Opera Mobile por lo menos versión 10.1 beta en Android[citación necesitada]
  • Google Chrome (Vista o superior. XP en cromo 6 o posterior.[9] OS X 10.5.7 o superior en Chrome 5.0.342.1 o más reciente)
  • Safari 3.0 o posterior (Mac OS X 10.5.6 o superior y Windows Vista o superior)
  • Konqueror/KDE 4.7 o posterior [10]
  • MobileSafari en Apple iOS 4.0 o posterior[11]
  • Android por defecto del navegador en forma de panal (v3.x) o posterior[12]
  • BlackBerry 10 y BlackBerry Tablet OS navegador por defecto
  • Windows Phone 7 o posterior[citación necesitada]
  • MicroB en Maemo
  • Odisea en MorphOS

Servidores

  • Apache 2.2.12 o más adelante usando mod_ssl[13][14][15] o alternativamente con mod_gnutls[16]
  • Microsoft Internet Information Server IIS 8[17] o más tarde.
  • Nginx con un acompañamiento OpenSSL construida con el apoyo SNI
  • Apache tráfico servidor 3.2.0 o posterior.
  • Radware Alteon ADC
  • A10 Networks Trueno ADC 2.7.2 o posterior
  • Cherokee Si ha compilado con soporte TLS
  • Versiones de lighttpd 1.4. x y 1.5 con el parche,[18] o 1.4.24+ sin parche[19]
  • F5 Networks Local Traffic Manager ejecuta la versión 11.1 o posterior [20]
  • Hiawatha (servidor web) 8.6 o posterior
  • LiteSpeed 4.1 o posterior
  • Libra 2.6 o posterior[21]
  • Apache Tomcat en Java 7 o posterior
  • PageKite[22] túnel proxy inverso[23]
  • Servidor Web Saetta[24] Via OpenSSL
  • LBL ® LoadBalancer 9.1 o posterior[25]
  • Citrix NetScaler 9.2 o posterior (9.3 mejorado)[26]
  • Radware Alteon ADC corriendo AlteonOS 28,1 o posterior [27]
  • HAProxy 1.5 o posterior [28]
  • Servidor de correo EVO [29]
  • Lighttpd desde la versión 1.4.24 [30]

Bibliotecas

  • Mozilla NSS 3.11.1[31] lado del cliente sólo
  • OpenSSL
    • 0.9.8F (lanzado el 11 de octubre de 2007) - no compilado por defecto, puede ser compilado con la opción config '--enable-tlsext'.
    • 0.9.8J (publicado el 07 de enero de 2009) a través de 1.0.0 (lanzado el 29 de marzo de 2010) - compilado por defecto
  • GnuTLS[32]
  • CyaSSL -no compilado por defecto, puede ser compilado con la opción config '--enable-sni' o '--enable-tlsx'.[33]
  • PolarSSL desde 1.2.0 - compilado por defecto
  • libcurl / cURL desde 7.18.1 (lanzado el 30 de marzo de 2008) cuando se compila contra un toolkit SSL/TLS con apoyo SNI
  • (Python 3.2SSL, urllib [2] y httplib módulos) [34]
  • Qt 4.8[35]
  • Oracle Java 7 JSSE [36]
  • Apache HttpComponents 4.3.2 [37]
  • wget 1.14[38]
  • Android 2.3 (Gingerbread) tiene soporte parcial si la aplicación utiliza HttpsURLConnection clase.[39]
  • Android 3.0 (Honeycomb) cuenta con soporte completo[40]
  • Io::Socket::SSL (módulo Perl/CPAN, desde la versión 1.83 [41])
  • Lucio 7.9.5 (módulo de SSL) [42]
  • MatrixSSL (cliente y servidor)[43]
  • Stunnel (cliente y servidor)[44]

No hay soporte

SNI no son compatibles con las siguientes combinaciones:

Del lado del cliente

  • WebDAV Cliente incluido en Windows 7 y Windows 8[citación necesitada]
  • Internet Explorer (cualquier versión) en Windows XP o Internet Explorer 6 o una versión anterior
  • Safari en Windows XP
  • BlackBerry OS 7.1 o anterior
  • Windows Mobile hasta 6.5[45]
  • Android navegador por defecto en Android 2.x[46] (Fijo en panal para tablets y Ice Cream Sandwich para los teléfonos)
  • wget antes de 1.14
  • Navegador de Nokia para Symbian por lo menos en Series60
  • Opera Mobile para Symbian por lo menos en Series60

Del lado del servidor

  • IBM HTTP Server [47][48]

Bibliotecas

  • Qt del lado del cliente hasta 4.7[35]
  • Mozilla NSS del lado del servidor [49][50]
  • Java antes de 1.7
  • Python 2.x, 3.0, 3.1)SSL, urllib [2] y httplib módulos) [34]

Referencias

  1. ^ "Indicación de nombre de servidor". Transporte Layer Security (TLS) extensiones. IETF. p. 8. 3.1 segundos. RFC 3546. https://Tools.ietf.org/html/rfc3546#Section-3.1.
  2. ^ "CAcert VHostTaskForce". CAcert Wik.
  3. ^ "¿Qué es un dominio múltiple (UCC) SSL certificado?".
  4. ^ "TLS Server nombre indicación". Diario de Paul.
  5. ^ "Proyecto EdelKey".
  6. ^ Marca, Kaspar (2009-03-29). "TLS SNI sitio de prueba".
  7. ^ https://blogs.msdn.com/b/ieinternals/Archive/2009/12/07/Certificate-name-mismatch-Warnings-and-Server-Name-indication.aspx
  8. ^ Ópera (25 / 02 / 2005). "Changelog para ópera [8] Beta 2 para Windows" (a través de Archive.org). Changelogs ópera para Windows. Opera.com. Archivado de el original en 2005-11-23. "Readded soporte experimental para las extensiones de TLS y TLS 1.1. Configuración está deshabilitada por defecto".
  9. ^ "Google Chrome, tema 43142, uso SSLClientSocketNSS en Windows por defecto". 2010-10-29 - aunque muchos reportan cromo 8 no funciona con SNI en XP y Win7.
  10. ^ "Bug 122433: soporte de identificación nombre del servidor". Bugs.kde.org. 2011-07-18.
  11. ^ Kehrer, Paul. "SNI en iOS 4,0". 22 de noviembre de 2010.
  12. ^ "La cuestión 12908 - android Https - sitios web compatibles con indicación de nombre de servidor (SNI) no funcionan". Code.google.com. 23 de agosto de 2011.
  13. ^ "Bug 34607: apoyo para la indicación del nombre de servidor". Apache Software Foundation.
  14. ^ "Revisión 776281: agregar soporte para el servidor de nombre indicación a la rama de Apache 2.2. x". Apache Software Foundation.
  15. ^ "Cambios: soporte de servidor nombre indicación aparece bajo los cambios para Apache 2.2.12". Apache Software Foundation.
  16. ^ Notaras, George (2007-08-10). "Con SSL activado nombre Hosts basados en Apache Virtual con mod_gnutls".
  17. ^ "¿Qué es nuevo en IIS 8". Weblogs.asp.net. 2012-04-01.
  18. ^ "#386 (TLS servername extensión (SNI) para namebased TLS-vhosts)". Trac.lighttpd.net. 2011-03-08 obtenido.
  19. ^ "1.4.24 - ahora con garantía de devolución de TLS SNI y el dinero". Blog.lighttpd.net. 2011-03-08 obtenido.
  20. ^ "sol13452: configurar un servidor virtual para servir múltiples sitios HTTPS mediante la función de indicación de nombre de servidor TLS (SNI)". Ask.F5.com. 2012-03-26.
  21. ^ "Apsis Gmbh". Apsis.ch. de 2011-08-18.
  22. ^ "Open Source PageKite". PageKite.net. 2012-04-18.
  23. ^ "Back-ends SSL/TLS, puntos finales y SNI". PageKite.net. 2012-04-18.
  24. ^ Características del servidor web Saetta
  25. ^ "Proxy inverso unificada". TCOGROUP.
  26. ^ "Configuración de un servidor Virtual de SSL para el alojamiento seguro de múltiples sitios". Citrix. 05 de julio de 2012.
  27. ^ "La introducción de AlteonOS 28.1! -Base de conocimiento - Radware". KB.Radware.com. 2012-08-20.
  28. ^ "HAProxy - el equilibrador de carga confiable, alto rendimiento TCP y HTTP".
  29. ^ "EVO Mail Server con soporte TLS SNI".
  30. ^ "1.4.24 - ahora con garantía de devolución de TLS SNI y el dinero".
  31. ^ "Notas de la versión del NSS 3.11.1". Mozilla.org. 2011-03-08 obtenido.
  32. ^ "TLS Extensions". GNU.org. 2010-08-01. 2011-03-08 obtenido.
  33. ^ "Con indicación de nombre de servidor (SNI) CyaSSL". wolfSSL.com. 24 / 05 / 2013. 25 / 11 / 2013 obtenido.
  34. ^ a b "Soporte de extensión TLS SNI en el módulo de ssl". Bugs.Python.org. 2011-03-08 obtenido.
  35. ^ a b "QTBUG-1352. Sería útil si QSslSocket es compatible con las extensiones de TLS como servidor de nombre indicación según RFC 3546.". QT Bug Tracker. 2011-04-15.
  36. ^ "Java SE 7 Suelte las mejoras de seguridad". download.Oracle.com. 2012-12-12.
  37. ^ "HttpComponents HttpClient 4.3.2 liberado". 2014-01-21.
  38. ^ "Noticias: GNU wget 1.14 liberado". GNU Wget. 19 / 10 / 2012.
  39. ^ "Clientes HTTP de android". Google. 03 de agosto de 2012.
  40. ^ "Cuestión 12908: Https sitios web compatibles con indicación de nombre de servidor (SNI) no funciona". Google. 03 de agosto de 2012.
  41. ^ "Archivo IO::Socket::SSL cambios menciona introducción del SNI".
  42. ^ "Módulo SSL de Pike". 30 de agosto de 2013.
  43. ^ "Página de noticias MatrixSSL".
  44. ^ "página del comando man stunnel".
  45. ^ "Entender el nombre del certificado uniones mal hechas". Blogs.msdn.com. 2011-03-08 obtenido.
  46. ^ "Android número 1290 - sitios web Https apoyo indicación de nombre de servidor (SNI) no funcionan". Code.google.com. 2010-12-01. 2011-12-13.
  47. ^ "IBM HTTP Server SSL preguntas y respuestas". Publib.Boulder.IBM.com. 2011-03-08 obtenido.
  48. ^ "IHS 8 desarrollado por Apache 2.2. x?". Publib.Boulder.IBM.com. 2011-03-08 obtenido.
  49. ^ "NSS Roadmap (a partir del 11 de septiembre de 2009)". Wiki.mozilla.org. 2011-03-08 obtenido.
  50. ^ "Implementar TLS Server nombre indicación para servidores". Bugzilla@Mozilla. 2006-11-11. 30 / 10 / 2012 obtenido.

Enlaces externos

  • RFC6066 (obsoletes RFC4366 (que sustituido RFC3546))
  • https://Alice.SNI.Velox.ch/ Prueba del cliente TLS SNI capacidad
  • [1]

Otras Páginas

Obtenido de"https://en.copro.org/w/index.php?title=Server_Name_Indication&oldid=622220850"