Ho un vecchio sistema CentOS 5.11 con OpenSSL 0.9.8e. Sono in grado di connettere la maggior parte dei siti SSL senza problemi. Tuttavia, con alcuni siti come www.looklinux.com, se provo a connettermi, ottengo questo errore:
openssl s_client -connect www.looklinux.com:443
CONNECTED(00000003)
27080:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert
handshake failure:s23_clnt.c:586:
Ora, da fare
openssl s_client -connect www.google.com:443 | grep -i "protocol"
Vedo Protocol : TLSv1
nell'output. E dal link link
So che www.looklinux.com supporta TLS 1.0, 1.1 e 1.2. Quindi sembra che il client e il server condividano almeno un protocollo compatibile (TLS v1) e non è questo il problema. Ho ragione finora?
Allora, cosa sta andando male e come posso risolverlo?
Quando lo eseguo con il flag -debug
ottengo:
openssl s_client -connect www.looklinux.com:443 -debug
CONNECTED(00000003)
write to 0x872a198 [0x87665b8] (88 bytes => 88 (0x58))
0000 - 16 03 01 00 53 01 00 00-4f 03 01 5b 05 ff fc 97 ....S...O..[....
0010 - 78 87 a5 97 77 11 57 60-1b e0 ae 9f 81 8c c6 c6 x...w.W'........
0020 - 15 3c fb 0b ef 3e d7 20-8a 83 3b 00 00 28 00 39 .<...>. ..;..(.9
0030 - 00 38 00 35 00 16 00 13-00 0a 00 33 00 32 00 2f .8.5.......3.2./
0040 - 00 05 00 04 00 15 00 12-00 09 00 14 00 11 00 08 ................
0050 - 00 06 00 03 00 ff 01 .......
0058 - <SPACES/NULS>
read from 0x872a198 [0x876bb18] (7 bytes => 7 (0x7))
0000 - 15 03 01 00 02 02 28 ......(
1678:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:586:
Questo post: link
suggerisce che a volte una versione precedente di OpenSSL non sia semplicemente compatibile. È facile spiegare che cosa non può fare il vecchio OpenSSL? E non c'è davvero nessuna soluzione? Sono cauto nel "aggiornarlo" costruendo OpenSSL dal sorgente, perché le istruzioni per compilare dalla fonte di solito hanno errori o omissioni, in cui un lettore esperto sa quali sono le istruzioni supposte da dire, ma io seguo le direzioni esattamente e ottenere hosed. Quindi spero di poter risolvere questo problema semplicemente installando un certificato extra, o qualcosa del genere.