====== TLS1.2 <-> SSLv3 wrapper ======
Situation: there is a proprietary application that only supports SSLv3 and the vendor does not care.
Solution:
- make the application listen to 127.0.0.1:4443 or something like this
- socat -v openssl-listen:443,cert=/etc/ssl/our_key_cert.pem,verify=0,reuseaddr,fork ssl:127.0.0.1:4443,verify=0**,method=ssl3**
===== Disabled SSL3 support =====
As of 9/2016, Debian links socat against openssl without SSL3 support. Therefore the above no longer works.
I have managed to compile openssl with SSL3
./Configure --prefix=/opt/ssl3 linux-x86_64
and somehow compile socat with it
change /sw to /opt/ssl3 in configure
negate the condition above
LIBS=-ldl ./configure
openssl s_client supports ssl3 now (/opt/ssl3/bin/openssl s_client -connect xxx:443 -ssl3) and socat too.
===== Old ciphersuites only =====
Next, the following system was encountered during an... eh... //network security reconnaissance//.
443/tcp open Ubiquity Crap
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 1024) - D
| TLS_RSA_WITH_RC4_128_MD5 (rsa 1024) - A
| TLS_RSA_WITH_RC4_128_SHA (rsa 1024) - A
| compressors:
|
| cipher preference: client
| warnings:
| CBC-mode cipher in SSLv3 (CVE-2014-3566)
| Ciphersuite uses MD5 for message integrity
| Weak certificate signature: SHA1
|_ least strength: D
Cipher suites need to be replaced in your socat in xio-openssl.c:
//char *ci_str = "HIGH:-NULL:-PSK:-aNULL"; /* cipher string */
char *ci_str = "ALL:+NULL"; /* cipher string */