Escenario: HTTPs e SNI
Sumario
Introdución
Esquema de rede do escenario.
Configuración do escenario
Configuración do server
Tómase como punto de partida o servidor web ó remate do escenario anterior. Un punto a ter en conta á hora de implantar esta práctica é que van convivir no mesmo servidor sitios web https cun socket propio e sitios web https compartindo o mesmo socket grazas a SNI.
Se vos resulta complicado ou con vistas a montalo en prácticas co alumnado e para distinguir as dúas técnicas preferides que non convivan no mesmo server, o único que habería que facer é eliminar as IPs adicionais e deshabilitar os sitios web de www.tenda1.example e www.tenda2.example co comando a2dissite.
Para deshabilitar os sitios tendaprobas, tanto por http como por https:
$ sudo a2dissite www.tenda1.example.conf $ sudo a2dissite www.tenda1.example-ssl.conf $ sudo a2dissite www.tenda2.example.conf $ sudo a2dissite www.tenda2.example-ssl.conf $ sudo systemctl reload apache2 $ sudo apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: *:80 127.0.0.1 (/etc/apache2/sites-enabled/000-default.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex ssl-stapling: using_defaults Mutex ssl-cache: using_defaults Mutex default: dir="/var/run/apache2/" mechanism=default Mutex watchdog-callback: using_defaults Mutex ssl-stapling-refresh: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 Group: name="www-data" id=33
Configurar a resolución DNS dende os clientes
Para poder acceder ós sitios web dende os clientes hai que configurar a resolución dns. Igual que no escenario anterior hai dúas solucións:
- Instalar un servidor dns cunha zona para cada un dos dominios probas1.example, probas2.example e probas3.example
- Nos equipos cliente poden engadirse as entradas correspondentes ós hosts www.probas1.example, www.probas2.example e www.probas3.example no arquivo hosts.
Aínda que non é a mellor solución, por ser un escenario de probas escolleuse a segunda por ser a máis rápida e sinxela.
A modo de exemplo así quedaría o arquivo hosts dun cliente linux:
$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 lxd 192.0.2.11 www.tenda1.example 192.0.2.12 www.tenda2.example 192.0.2.13 www.probas1.example www.probas2.example www.probas3.example # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
SNI
No escenario anterior cada dominio accesible por https tiña un socket (IP/porto) adicado. As razóns hai que buscalas no funcionamento do protocolo http e na forma de establecemento da canle cifrada SSL/TLS. Supoñamos por un momento que un servidor web teña unha única IP para todos os dominios aloxados; por exemplo, www.tendaprobas1.com e www.tendaprobas2.com. Nesta situación, cando o servidor web Apache recibe unha solicitude http dun cliente, revisa a cabeceira Host da solicitude para ver cal dos dominios aloxados (virtualhosts baseados en nome) é o que lle interesa ó cliente. Desta forma, pode consultar o arquivo de configuración correcto e recuperar a información pedida polo cliente. Na seguinte imaxe pode observarse unha solicitude http onde na cabeceira Host especifícase que o dominio de interese é www.tendaprobas1.com:
Mensaxe http coa cabeceira Host especificando o dominio www.tendaprobas1.com
Fig. Cabeceira HTTP coa cabeceira Host indicando o sitio web de interese
Se usamos https é de supoñer que o cliente debería recibir o certificado asociado ó dominio polo que pregunta cando se vaia a establecer a canle SSL/TLS. Pero aquí é onde aparece o problema; xa que durante as mensaxes intercambiadas para crear a canle SSL/TLS, non se especifica o dominio e a canle cifrada crease antes de que o cliente envíe a solicitude http coa cabeceira Host. Polo tanto, o servidor Apache non sabe que certificado usar por que non sabe que dominio concreto quere visitar o cliente:
SSL/TLS sen SNI
Fig. Establecemento dunha canle SSL/TLS e a problemática do certificado a usar
Se cada dominio está nunha IP (ou socket) diferente, este problema desaparece ó non poder equivocarse o servidor, xa que o único que ten que facer o servidor é usar o certificado do sitio web asociado á IP onde contacta o cliente:
SSL/TLS sen SNI pero con varias IPs
Fig. Establecemento de canles SSL/TLS usando sockets adicados a cada sitio web
A solución un dominio-unha IP funciona, pero desaproveita direccións. Para superar esta limitación creouse unha extensión de TLS chamada SNI (Server Name Indication), onde o cliente durante o establecemento da canle TLS indica o dominio ó que se quere conectar; permitindo desta forma que o servidor web seleccione o certificado axeitado.
SSL/TLS con SNI
Fig. Establecemento da canles SSL/TLS usando SNI
A continuación pode verse nos seguintes paquetes capturados co sniffer Wireshark o establecemento da conexión entre o cliente e o servidor. No primeiro podemos ver como o cliente envía o nome de dominio na extensión SNI do TLS e no segundo a resposta do servidor enviando o certificado correspondente:
Establecemento SSL/TLS con extensisón SNI
Fig. O cliente establece a conexión e indica o dominio de interese (www.tendaprobas1.com) na extensión SNI
Establecemento SSL/TLS con extensisón SNI - resposta do servidor
Fig. Resposta do servidor enviando o certificado axeitado para www.tendaprobas1.com
SNI fai que un servidor poida utilizar múltiples certificados nunha mesma dirección IP e número de porto, permitindo que múltiples sitios web seguros (https) poidan ser servidos nunha mesma IP sen que todos os sitios compartan un certificado común. Este concepto é equivalente ó concepto de host virtuais baseados en nome de http/1.1 pero para https. SNI non está limitado a https, estando dispoñible para calquera outro servizo que funcione sobre TLS.
Non todos, pero a gran maioría dos navegadores, servidores e proxys web soportan SNI e na seguinte URL pode verse unha listaxe listaxe concreta.
Apache con HTTPS e SNI
Sitio por defecto
O sitio por defecto será o sitio ó que vaia Apache cando reciba unha petición http destinada a unha IP-porto e que non se poida asignar a un virtualhost concreto ó comparar a cabeceira Host e a directiva ServerName dos virtualhosts activos no servidor. O acceso por http ó sitio por defecto xa está activado no escenario anterior e procederemos a activar o acceso por https que usan os certificado snake-oil:
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost 192.0.2.13:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo nano /etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost 192.0.2.13:443>
ServerAdmin webmaster@localhost
...
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
...
sudo a2ensite default-ssl.conf sudo systemctl reload apache2 sudo apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: 192.0.2.11:443 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example-ssl.conf:1) 192.0.2.11:80 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example.conf:1) 192.0.2.12:443 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example-ssl.conf:1) 192.0.2.12:80 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example.conf:1) 192.0.2.13:80 server5C (/etc/apache2/sites-enabled/000-default.conf:1) 192.0.2.13:443 server5C (/etc/apache2/sites-enabled/default-ssl.conf:2) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex watchdog-callback: using_defaults Mutex ssl-stapling-refresh: using_defaults Mutex ssl-stapling: using_defaults Mutex ssl-cache: using_defaults Mutex default: dir="/var/run/apache2/" mechanism=default PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 Group: name="www-data" id=33
Nos arquivos de configuración do sitio por defecto /etc/apache2/sites-enabled/000-default.conf e /etc/apache2/sites-enabled/default-ssl.conf o DocumentRoot está definido como /var/www/html. Para modificar a páxina index.html hai que editala:
$ sudo nano /var/www/html/index.html
<html> <head><title>Sitio Web por defecto</title></head> <body> <b>Sitio Web por defecto</b> </body> </html>
Accedendo cun navegador a 192.0.2.13 por http e https (aceptando o certificado autoasinado 'snakeoil') cárgase a páxina principal:
Sitio Web por defecto
Sitio Web por defecto https
Fig. Acceso por http e https ó sitio por defecto
Sitio www.probas1.example
Segundo o enunciado, o acceso ó dominio www.probas1.example é unicamente a través de http; polo tanto, creamos un arquivo de configuración para acceder por http a www.probas1.example:
$ sudo nano /etc/apache2/sites-available/www.probas1.example.conf
<VirtualHost 192.0.2.13:80>
ServerName www.probas1.example
ServerAdmin webmaster@probas1.example
DocumentRoot /var/www/probas1.example
ErrorLog ${APACHE_LOG_DIR}/probas1.example_error.log
CustomLog ${APACHE_LOG_DIR}/probas1.example_access.log combined
</VirtualHost>
Creación do directorio especificado no DocumentRoot e creación da páxina index.html do sitio:
$ sudo mkdir /var/www/probas1.example $ sudo nano /var/www/probas1.example/index.html
<html> <head><title>Sitio de PROBAS 1</title></head> <body> <b>Sitio de PROBAS 1</b> </body> </html>
Activación do sitio e verificación:
$ sudo a2ensite www.probas1.example.conf $ sudo systemctl reload apache2 $ sudo apache2ctl -S ...
VirtualHost configuration:
192.0.2.11:443 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example-ssl.conf:1)
192.0.2.11:80 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example.conf:1)
192.0.2.12:443 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example-ssl.conf:1)
192.0.2.12:80 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example.conf:1)
192.0.2.13:443 server5C (/etc/apache2/sites-enabled/default-ssl.conf:2)
192.0.2.13:80 is a NameVirtualHost
default server server5C (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost server5C (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost www.probas1.example (/etc/apache2/sites-enabled/www.probas1.example.conf:1)
...
Fixarse como no mesmo socket <192.0.2.13,tcp,80> están dous sitios web diferentes (o sitio por defecto e www.probas1.example). Grazas a cabeceira Host que envía o cliente web, o servidor Apache sabe que páxina servir.
Acceso a www.probas1.example por http:
Sitio Web probas1
Fig. Acceso por http ó sitio www.probas1.example
No caso de acceder a www.probas1.example por https ocurrirá o seguinte:
A resolución dns de www.probas1.example é 192.0.2.13 (a IP do servidor web). O cliente web vai á IP 192.0.2.13 porto 443 e pide a páxina principal do dominio www.probas1.example Como non hai ningún sitio web no servidor que cumpra co anterior, o servidor web envía o certificado snakeoil e no caso de aceptalo devolve o sitio web por defecto. Sitio Web por defecto https
Fig. Acceso por https ó sitio www.probas1.example
Sitio www.probas2.example
Segundo o enunciado, o acceso ó dominio www.probas2.example será tanto de http coma de https; polo tanto teremos que crear dous arquivos de configuración, un para acceder por http e outro para acceder por https. Ademais, o acceso á carpeta segredo do sitio web ten que ser por https, bloqueándose o acceso no caso de facelo por http. Obrigar a usar https para acceder a un recurso pode facerse a través da directiva de configuración SSLRequireSSL.
Procedemos a crear o arquivo de configuración para http:
$ sudo nano /etc/apache2/sites-available/www.probas2.example.conf
<VirtualHost 192.0.2.13:80>
ServerName www.probas2.example
ServerAdmin webmaster@probas2.example
DocumentRoot /var/www/probas2.example
<Directory /var/www/probas2.example/segredo>
SSLRequireSSL
</Directory>
ErrorLog ${APACHE_LOG_DIR}/probas2.example_error.log
CustomLog ${APACHE_LOG_DIR}/probas2.example_access.log combined
</VirtualHost>
Creamos o directorio especificado en DocumentRoot e editamos a páxina index.html do sitio:
sudo mkdir /var/www/probas2.example sudo nano /var/www/probas2.example/index.html
<html> <head><title>Sitio de PROBAS 2</title></head> <body> <b>Sitio de PROBAS 2</b> </body> </html>
Creamos a carpeta segredo e editamos a páxina index.html da carpeta segredo:
sudo mkdir /var/www/probas2.example/segredo sudo nano /var/www/probas2.example/segredo/index.html
<html> <head><title>TOP SECRET</title></head> <body> <b>TOP SECRET</b> </body> </html>
Creamos o certificado dixital autoasinado e gardámos o certificado e a clave privada na carpeta /etc/apache2/certificados:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/certificados/www.probas2.example.key -out /etc/apache2/certificados/www.probas2.example.crt
Generating a 2048 bit RSA private key ................+++ .........................................+++ writing new private key to '/etc/apache2/certificados/www.probas2.example.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:España Locality Name (eg, city) []:Santiago Organization Name (eg, company) [Internet Widgits Pty Ltd]:Probas2 S.A. Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:www.probas2.example Email Address []:admin@probas2.example
A continuación creamos o arquivo de configuración para https:
$ sudo nano /etc/apache2/sites-available/www.probas2.example-ssl.conf
<VirtualHost 192.0.2.13:443>
ServerName www.probas2.example
ServerAdmin webmaster@localhost
DocumentRoot /var/www/probas2.example
SSLEngine on
SSLCertificateFile /etc/apache2/certificados/www.probas2.example.crt
SSLCertificateKeyFile /etc/apache2/certificados/www.probas2.example.key
ErrorLog ${APACHE_LOG_DIR}/probas2.example_error.log
CustomLog ${APACHE_LOG_DIR}/probas2.example_access.log combined
</VirtualHost>
Activamos o sitio ww.probas2.example tanto por http como por https:
$ sudo a2ensite www.probas2.example.conf $ sudo a2ensite www.probas2.example-ssl.conf $ sudo systemctl reload apache2 $ sudo apache2ctl -S
...
VirtualHost configuration:
192.0.2.11:443 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example-ssl.conf:1)
192.0.2.11:80 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example.conf:1)
192.0.2.12:443 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example-ssl.conf:1)
192.0.2.12:80 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example.conf:1)
192.0.2.13:443 is a NameVirtualHost
default server server5C (/etc/apache2/sites-enabled/default-ssl.conf:2)
port 443 namevhost server5C (/etc/apache2/sites-enabled/default-ssl.conf:2)
port 443 namevhost www.probas2.example (/etc/apache2/sites-enabled/www.probas2.example-ssl.conf:1)
192.0.2.13:80 is a NameVirtualHost
default server server5C (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost server5C (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost www.probas1.example (/etc/apache2/sites-enabled/www.probas1.example.conf:1)
port 80 namevhost www.probas2.example (/etc/apache2/sites-enabled/www.probas2.example.conf:1)
...
Agora temos que:
- No socket <192.0.2.13,tcp,80> hai tres sitios web (por defecto, www.probas1.example e www.probas2.example) e novamente grazas á cabeceira Host o servidor sabe cal debe servir.
- No socket <192.0.2.13,tcp,443> hai dous sitios web (por defecto e www.probas2.example) e grazas á SNI o servidor sabe que certificado debe servir para establecer a canle cifrada, e permitir ó cliente autenticar ó servidor (saber se está conectado co verdadeiro server).
Analizando a saída do comando apache2ctl podemos ver que:
- No port tcp/80 están dispoñibles o servidor por defecto, o sitio www.probas1.example e o sitio www.probas2.example.
- No port tcp/443 están dispoñibles o servidor por defecto e o sitio www.probas2.example.
Probamos a acceder por http e https a www.probas2.example:
Sitio Web probas2
Sitio Web probas2 https
Fig. Fig. Acceso por http e https ó sitio www.probas2.example
No caso de acceder por http á carpeta segredo aparecerá un erro ó estar prohibido este tipo de acceso:
Cartafol segredo
Fig. Erro ó acceder por http á carpeta segredo do sitio www.probas2.com
Os erros de acceso por http a segredo quedan recollidos nos logs do sitio:
$ cat /var/log/apache2/probas2.example_error.log
... [Sun May 07 19:31:56.352785 2023] [ssl:error] [pid 3090:tid 140003761964800] [client 192.0.2.1:56556] AH02219: access to /var/www/probas2.example/segredo failed, reason: SSL connection required ubuntu@server5C:~$
Pero o acceso por https está autorizado:
Cartafol segredo
Fig. Acceso autorizado por https á carpeta segredo do sitio www.probas2.example
Sitio www.probas3.example
Creación do arquivo de configuración para http. Emprégase a directiva Redirect para reenviar ós clientes que acceden por http a unha conexión segura https:
$ sudo nano /etc/apache2/sites-available/www.probas3.example.conf
<VirtualHost 192.0.2.13:80>
ServerName www.probas3.example
ServerAdmin webmaster@probas3.example
DocumentRoot /var/www/probas3.example
Redirect permanent / https://www.probas3.example/
ErrorLog ${APACHE_LOG_DIR}/probas3.example_error.log
CustomLog ${APACHE_LOG_DIR}/probas3.example_access.log combined
</VirtualHost>
Edición da páxina index.html do sitio:
$ sudo mkdir /var/www/probas3.example $ sudo nano /var/www/probas3.example/index.html
<html> <head><title>Sitio de PROBAS 3</title></head> <body> <b>Sitio de PROBAS 3</b> </body> </html>
Creación certificado dixital:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/certificados/www.probas3.example.key -out /etc/apache2/certificados/www.probas3.example.crt
Generating a 2048 bit RSA private key ..+++ ...........+++ writing new private key to '/etc/apache2/certificados/www.probas3.example.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:España Locality Name (eg, city) []:Santiago Organization Name (eg, company) [Internet Widgits Pty Ltd]:Probas3 S.A. Organizational Unit Name (eg, section) []:Dpto. Ventas Common Name (e.g. server FQDN or YOUR name) []:www.probas3.example Email Address []:admin@probas3.example
Creación do arquivo de configuración para https:
sudo nano /etc/apache2/sites-available/www.probas3.example-ssl.conf
<VirtualHost 192.0.2.13:443>
ServerName www.probas3.example
ServerAdmin webmaster@probas3.example
DocumentRoot /var/www/probas3.example
SSLEngine on
SSLCertificateFile /etc/apache2/certificados/www.probas3.example.crt
SSLCertificateKeyFile /etc/apache2/certificados/www.probas3.example.key
ErrorLog ${APACHE_LOG_DIR}/probas3.example_error.log
CustomLog ${APACHE_LOG_DIR}/probas3.example_access.log combined
</VirtualHost>
Activación do sitio ww.probas3.example:
$ sudo a2ensite www.probas3.example.conf $ sudo a2ensite www.probas3.example-ssl.conf $ sudo systemctl reload apache2 $ sudo apache2ctl -S
...
VirtualHost configuration:
192.0.2.11:443 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example-ssl.conf:1)
192.0.2.11:80 www.tenda1.example (/etc/apache2/sites-enabled/www.tenda1.example.conf:1)
192.0.2.12:443 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example-ssl.conf:1)
192.0.2.12:80 www.tenda2.example (/etc/apache2/sites-enabled/www.tenda2.example.conf:1)
192.0.2.13:443 is a NameVirtualHost
default server server5C (/etc/apache2/sites-enabled/default-ssl.conf:2)
port 443 namevhost server5C (/etc/apache2/sites-enabled/default-ssl.conf:2)
port 443 namevhost www.probas2.example (/etc/apache2/sites-enabled/www.probas2.example-ssl.conf:1)
port 443 namevhost www.probas3.example (/etc/apache2/sites-enabled/www.probas3.example-ssl.conf:1)
192.0.2.13:80 is a NameVirtualHost
default server server5C (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost server5C (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost www.probas1.example (/etc/apache2/sites-enabled/www.probas1.example.conf:1)
port 80 namevhost www.probas2.example (/etc/apache2/sites-enabled/www.probas2.example.conf:1)
port 80 namevhost www.probas3.example (/etc/apache2/sites-enabled/www.probas3.example.conf:1)
...
O acceso por http é redirixido a https grazas a directiva Redirect. Analizando o log probas3.example_access.log podemos ver o código de resposta 301 do servidor ante a petición da páxina principal do sitio e como na seguinte liña vólvese a recibir a mesma solicitude e o servidor proporciona a resposta (código 200).
$ cat /var/log/apache2/probas3.example_access.log
... 192.0.2.1 - - [07/May/2023:20:46:38 +0000] "GET / HTTP/1.1" 301 586 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0" 192.0.2.1 - - [07/May/2023:20:46:41 +0000] "GET / HTTP/1.1" 200 2664 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0" 192.0.2.1 - - [07/May/2023:20:46:41 +0000] "GET /favicon.ico HTTP/1.1" 404 520 "https://www.probas3.example/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0" ...
Sitio Web probas3
Fig. Acceso por https ó sitio www.probas3.example
Conclusión
Vemos que é posible acceder a diferentes sitios correndo no mesmo socket (IP-porto) por https grazas a SNI e o envío por parte do cliente do nome de dominio na extensión SNI do TLS.
Na seguinte imaxe podemos ver o paquete Client Hello durante o establecemento da canle cifrada para https://www.probas2.example
SNI probas2.example
Fig. Extensión SNI indicando o sitio www.probas2.example
Na seguinte imaxe podemos ver o paquete Client Hello durante o establecemento da canle cifrada para https://www.probas3.example