Depuis quelque temps, les navigateurs bloquent les requêtes SSL/TLS utilisant des versions de protocoles et suites cryptographiques jugées trop faibles.
Cependant, on peut avoir besoin de se connecter à de vieux équipements qui eux ne supportent que ces vielles versions ; en l’occurrence, un PDU. En théorie, ils supportent aussi les connexions en clair, sauf que des fois non…
C’est là que socat vient à la rescousse. En effet, il est parfaitement
capable de négocier une version SSL arbitraire d’un côté et de ressortir ça
en clair de l’autre.
while :; do socat TCP-LISTEN:8080,fork
OPENSSL:172.20.44.171:443,method=SSL23,cipher=RC4-MD5,verify=0; sleep 1;
done
Avec cette ligne, toutes les requêtes reçues en clair sur le port 8080
seront renvoyées en SSLv3 sur 172.20.44.171:443.
TCP-LISTEN:8080
écoute sur le port 8080 sans chiffrementfork
crée un processus enfant pour chaque connexion, ce qui évite de devoir relancer socat à chaque fois qu’une connexion est ferméeOPENSSL:172.20.44.171:443
se connecte en SSL sur l’IP 172.20.44.171 et le port 443method=SSL23
négocie les protocoles SSLv2 et SSLv3cipher=RC4-MD5
utilise le cipher RC4-MD5verify=0
évite de vérifier la CAsleep 1
sert à pour facilement interrompre la boucle avec ^Cwhile :; do […]; done
permet de ne pas relancer la commande sans cesse .
Maintenant pourquoi SSLv3 et RC4-MD5 ? Simplement parce que c’est ma référence d’algorithme pourri, j’étais donc à peu près sûr que ça allait marcher sur cet équipement.