Md at debian.org

tales of a debian maintainer

Divertirsi con SSL

Uhm, vediamo un attimo perché ultimamente questa procedura fallisce...

Iniziando così ho appena perso quasi due ore di vita perché un certo sito usa una vecchia versione di IIS, che sospetto non sia stata toccata da molti anni. È un sito del Ministero dell'Interno, blindatissimo. Gestito da persone, forse un po' timide, che è scomodo contattare.

Questo sito semplicemente chiude la connessione (ma dopo avere ricevuto la richiesta HTTP) se il client invia una richiesta troppo lunga durante l'handshake SSL. Non mi dilungo su come sono arrivato a capirlo, perché tra ottenere un messaggio di errore (wget non si preoccupa di fornirne uno...) e capirne la ragione ci sono state decine di ricerche con Google.

E tante prove. Prima con wget. Poi con openssl s_client, che ho scoperto funzionare se provavo a connettermi da un'altra macchina. A questo punto la strada è tutta in discesa, o quasi: basta ridurre la lunghezza del handshake perché evidentemente il sistema non funziona più da quando avevo aggiornato il sistema operativo, che ora usa librerie SSL che implementano molte più feature e algoritmi. Verifico che se imposto un solo algoritmo con openssl s_client -cipher allora funziona tutto anche sul primo server.

Peccato che 6 anni fa avessi scritto questi script per usare wget, che permette pochissimo controllo su come deve usare SSL. Rileggo diverse volte il manuale, ma le opzioni che ho a disposizione non aumentano. L'unica possibilità offerta è forzare una certa versione di SSL/TLS, ma se provo qualcosa diverso da TLSv1 (che si porta dietro tutte le feature che vorrei evitare) il programma muore malamente per un errore interno di GnuTLS.

Scopro facilmente che è un bug di wget risolto tre mesi fa, ma che fare? C'è una versione corretta in Debian experimental ma non ho nessuna voglia di ricompilare il pacchetto per questo server. Faccio qualche ipotesi e alla fine decido che il problema non merita una soluzione elegante: ho preso l'eseguibile di wget da un pacchetto del vecchio sistema operativo e modificato il $PATH dello script per usare questa versione. Funziona tutto come previsto.

Mi chiedo se ci sono buoni motivi per continuare a usare wget invece di curl.

About

This is the blog of Marco d'Itri.

S M T W T F S
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

See also:

My blogroll:


W3C HTML 4.01
W3C CSS 2.0     

Powered by Bryar.pm.