Selección de certificado SSL basada en el encabezado del host: ¿es posible?

17

¿Es posible que un servidor web seleccione un certificado SSL para usar en función del encabezado del host de la conexión entrante, o es esa información que solo está disponible después de establecer la conexión SSL?

Es decir, ¿puede mi servidor web listado en el puerto 443 y usar el certificado foo.com si se solicita https://foo.com , y el certificado bar.com si se solicita https://bar.com o estoy tratando de hacerlo? algo imposible porque el servidor tiene que establecer una conexión SSL antes de saber lo que quiere el cliente?

DrStalker
fuente

Respuestas:

23

Históricamente, su primera declaración es precisa. Ahora, hay múltiples opciones:

  • Un certificado comodín si subdominios dentro del mismo dominio.
  • Un certificado SAN / UCC para especificar nombres alternativos para el certificado, pudiendo así servir múltiples certificados.
  • Se introdujo SNI para establecer la conexión SSL después del encabezado Host. Sin embargo, esto tiene un soporte limitado, ya que es más nuevo.

Esto y otras personas me han respondido varias veces en ServerFault. Sugeriría buscar más detalles a menos que tenga una pregunta específica.

Warner
fuente
44
Fui a buscar y no pude encontrar nada; Esta es probablemente una de esas cosas que solo es fácil de buscar si conoce la respuesta para poder incluirla en los términos de búsqueda. Gracias.
DrStalker
3
Si hay respuestas existentes en ServerFault, hubiera sido bueno vincularlas.
organicveggie
serverfault.com/search , @organicveggie.
Warner
3
SNI no establece la conexión SSL después del encabezado Host, pero incluye el nombre de host en el protocolo de enlace SSL. No es que importe si no eres un desarrollador de SSL.
Bart van Heukelom
Buscar Serverfault da esto como la respuesta. Eso significa que canónicamente cualquier otra pregunta es un duplicado de esta. Ese enlace que incluiste no tiene resultados.
Ian Boyd
5

Para extender la respuesta de Warner: La página de CAcert Vhost Task Force compara varios métodos para usar múltiples dominios en un solo servidor. Yo personalmente uso la Indicación del nombre del servidor .

usuario1686
fuente
¿Cómo hacer frente a los usuarios de Windows XP, usuarios de Android, usuarios de Blackberry, etc.?
thomasrutter
3

Respuesta corta: no

HTTP está encapsulado dentro de SSL , por lo que cualquier información sobre la solicitud es inaccesible hasta que se haya establecido la conexión. Por lo tanto, hasta que se entregó un certificado al cliente. No hay forma de usar encabezados ni ninguna otra información cifrada, ya que todavía no están disponibles.

EDITAR: esto es cierto si quieres hoy en día ser un navegador cruzado y totalmente portátil. Como han dicho otros, hay algunos nuevos métodos emergentes que lo harán posible en el futuro cercano.

drAlberT
fuente
1

¿o es esa información que solo está disponible después de establecer la conexión SSL?

Correcto. La conexión SSL se establece antes de enviar cualquier parte de la solicitud HTTP (encabezado de host incluido).

Ricardo
fuente
2
Eso ya no es completamente exacto.
Warner