Diferencia entre revisiones de «Escenario: HTTPs e SNI»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 101: Línea 101:
 
Non todos, pero a gran maioría dos navegadores, servidores e proxys web soportan SNI e na [https://en.wikipedia.org/wiki/Server_Name_Indication seguinte URL] pode verse unha listaxe listaxe concreta.
 
Non todos, pero a gran maioría dos navegadores, servidores e proxys web soportan SNI e na [https://en.wikipedia.org/wiki/Server_Name_Indication seguinte URL] pode verse unha listaxe listaxe concreta.
  
−
= Apache con https e SNI =
+
= Apache con HTTPS e SNI =
  
 
== Sitio por defecto ==
 
== Sitio por defecto ==

Revisión del 10:58 9 feb 2026

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