Sto cercando di ottenere quello che alcuni anni fa è stato un problema a causa della mancanza di server configurati che ha causato
"avviso di stretta di mano: nome_recognized"
quando un client abilitato SNI (per Java 1.7 o client più grandi) inviava durante l'handshake il file
Estensione nome_server, nome_server: [tipo = nome_host (0), valore = nome host]
per esempio questa domanda era come evitare questo:
La mia versione di Apache è la 2.4.33, su Ubuntu 16.04. e il file di configurazione che uso è simile al seguente:
<IfModule ssl_module>
Listen 8095
</IfModule>
<IfModule mod_gnutls.c>
Listen 8095
</IfModule>
ServerName localhost
<IfModule mod_ssl.c>
<VirtualHost _default_:8095>
ServerName value.that.does.not.match.the.cn.in.certificate
ServerAlias value.that.does.not.match.the.cn.in.certificate
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /path_to_certificates/selfsigned.cert
SSLCertificateKeyFile /path_to_certificates/selfsigned.key
SSLVerifyClient none
SSLVerifyDepth 10
</VirtualHost>
</IfModule>
Ho fatto alcune ricerche e ho usato il seguente comando per verificare che SNI sia abilitato per il nome host che espongo tramite apache:
openssl s_client -servername hostanametocheck -tlsextdebug -connect hostanametocheck:8095 2>/dev/null | grep "server name"
per cui il risultato è:
TLS server extension "server name" (id=0), len=0
che da quello che ho letto è un indicatore che Apache invia questa estensione durante l'handshake che nel caso di client Java> 1.7 finirebbe come un'eccezione durante l'handshake.
Mi aspetto che il mio client Java (1.8) riceva quell'avviso e l'handshake fallirà, ma quando sono atterrato qui non lo è. Trascorro già abbastanza tempo a cercare di capire questo, ma sembra che vada oltre le mie conoscenze di rete e Linux.
A proposito, sto eseguendo l'apache sul mio computer di sviluppo, quindi la porta 8095 anziché 443. Ho mappato il nome host su localhost. SNI è abilitato sul lato client come posso vedere nei registri di handshake che l'estensione è stata inviata
Extension server_name, server_name: [type=host_name (0), value=hostname.that.does.not.match.cn.in.certificate.com]
Il tuo aiuto sarebbe molto apprezzato!