Conflitto tra domini SNI e HTTP forniti


22

Di recente ho spostato un sito Web WordPress con un piccolo negozio da un provider di hosting a un mio server con Ubuntu Server 12.04.2 LTS e Apache 2.2.22. Ho bisogno di SSL per il negozio. Ho impostato un paio di vhosts semplici su un nuovo IP per il server, uno che si collega alla porta 80 dell'IP specifico e l'altro che si collega alla porta 443. Entrambi hanno ServerName www.example.come ServerAlias example.comnella configurazione del vhost. Io ho SSLStrictSNIVHostCheck off.

Il sito funziona molto lentamente, ma funziona. Ricevo quanto segue nei miei log degli errori.

[Error] Hostname example.com provided via SNI and hostname www.example.com provided via HTTP are different

Mi aspetto che la lentezza sia correlata al messaggio sopra. Qualche idea sul perché questo appare e cosa posso fare al riguardo?

Risposte:


24

Guarda il tuo registro di accesso (non il registro degli errori). Con l'ora e la data dell'errore dovresti essere in grado di identificare la richiesta incriminata e scoprire l'agente utente. Nel mio caso, era un bot:

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)"

Il mio server risponde con HTTP 400: richiesta non valida.

A meno che non mi sbagli, nelle negoziazioni TLS, il client invia due volte il nome host: una volta PRIMA, la connessione SSL viene stabilita in SNI (Server Name Indication) e una volta DOPO nella richiesta HTTP effettiva. Se i nomi dei server non corrispondono, ciò indicherebbe un client danneggiato e non dovrebbe avere nulla a che fare con la configurazione del server.

Forse un giorno risolveranno il loro bot, nel frattempo probabilmente puoi ignorarlo. Dubito che ciò possa causare lentezza sull'host, a meno che le richieste non arrivino a un ritmo molto elevato.


11

Forse questo errore viene evocato intenzionalmente da alcuni client per testare le vulnerabilità del tuo server. Ho scoperto che una richiesta di ha researchscan367.eecs.umich.eduinnescato l'errore su un server che mantengo. In questo caso è positivo che si verifichi l'errore.

Ero curioso di sapere che tipo di attacchi sono possibili e ho posto questa domanda su Security Stack Exchange: che tipo di attacco è impedito dal codice di errore AH02032 di Apache2?


1

Sembra un problema client a prima vista ... Quale browser sta causando questo problema?

Il messaggio suggerirebbe che il nome host che il client invia durante l'impostazione del collegamento ssl non è lo stesso che il client invia nella richiesta HTTPS una volta che il livello SSL è attivo.


Non so che cosa sta causando questo. L'errore non riporta le informazioni sul client. So solo che lo vedo regolarmente. Speravo che ServerAlias ​​fosse sufficiente per renderlo felice poiché in teoria il server sa che www.domain.com e domain.com sono equivalenti.
flickerfly,

@flickerfly Sì, questo è un client difettoso e non puoi fare molto se non riesci a identificarlo.
Michael Hampton

2
Bene, ho appena disabilitato SNI rimuovendo la direttiva NameBasedVirtualHost per la porta 443. Immagino di non averne bisogno a questo punto. Penso che dovrebbe funzionare.
flickerfly,

1

Nel mio caso il problema era la creazione di un nuovo virtualhost con un carattere di sottolineatura. Ho un certificato SSL jolly.

Non ha funzionato:

<VirtualHost *:443>
        SSLEngine on
        ServerName sub_domain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

Sebbene Apache sia stato riavviato correttamente, ho riscontrato errori HTTP 400. Nel registro degli errori:

[Wed Sep 05 11:28:00.349960 2018] [ssl:error] [pid 19906:tid 140392626808576] AH02031: Hostname sub_domain.example.com provided via SNI, but no hostname provided in HTTP request

Ma la rimozione del carattere di sottolineatura ha funzionato:

<VirtualHost *:443>
        SSLEngine on
        ServerName subdomain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

1
Benvenuti in ServerFault. Inserire i caratteri di sottolineatura nei nomi host è contrario agli RFC e si romperà in vari modi. stackoverflow.com/questions/2180465/…
pulcini,

1
Esattamente! Ecco perché ora è anche qui come riferimento.
MS Berends,

0

Controlla il tuo file / etc / hosts per vedere se stai assegnando il nome di dominio a un indirizzo IP (interno) locale. Non dimenticare di riavviare il demone della cache del servizio nomi dopo aver modificato / etc / hosts service nscd restart

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.