
I am using stunnel as a proxy to support SoapUI mock services which are used to test an SSL based application. The SoapUI and stunnel proxy are running on an AWS Ubuntu 14.04 EC2 Instance communicating to a Tomcat server running on a second AWS Ubuntu 14.04 EC2 Instance. The target application uses a wildcard SSL Certificate and works successfully when accessed using a desktop browser (Chrome or Firefox). The issue I am encountering is that the stunnel connection logs a "SSL closed on SSL_read" message as soon as the cipher suite is negotiated as shown in the following stunnel.log: 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Clients allowed=2000 2016.11.14 21:34:19 LOG5[5287:140430154716992]: stunnel 4.53 on x86_64-pc-linux-gnu platform 2016.11.14 21:34:19 LOG5[5287:140430154716992]: Compiled with OpenSSL 1.0.1e 11 Feb 2013 2016.11.14 21:34:19 LOG5[5287:140430154716992]: Running with OpenSSL 1.0.1f 6 Jan 2014 2016.11.14 21:34:19 LOG5[5287:140430154716992]: Update OpenSSL shared libraries or rebuild stunnel 2016.11.14 21:34:19 LOG5[5287:140430154716992]: Threading:PTHREAD SSL:+ENGINE+OCSP Auth:LIBWRAP Sockets:POLL+IPv6 2016.11.14 21:34:19 LOG5[5287:140430154716992]: Reading configuration from file /etc/stunnel/stunnel.conf 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Compression not enabled 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Snagged 64 random bytes from /home/ubuntu/.rnd 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Wrote 1024 new random bytes to /home/ubuntu/.rnd 2016.11.14 21:34:19 LOG7[5287:140430154716992]: PRNG seeded successfully 2016.11.14 21:34:19 LOG6[5287:140430154716992]: Initializing service section [resourceServer] 2016.11.14 21:34:19 LOG4[5287:140430154716992]: Insecure file permissions on /etc/stunnel/stunnel.pem 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Certificate: /etc/stunnel/stunnel.pem 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Certificate loaded 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Key file: /etc/stunnel/stunnel.pem 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Private key loaded 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Verify directory set to /etc/ssl/certs 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Added /etc/ssl/certs revocation lookup directory 2016.11.14 21:34:19 LOG7[5287:140430154716992]: SSL options set: 0x00000004 2016.11.14 21:34:19 LOG6[5287:140430154716992]: Initializing service section [tpserver] 2016.11.14 21:34:19 LOG4[5287:140430154716992]: Insecure file permissions on /etc/stunnel/stunnel.pem 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Certificate: /etc/stunnel/stunnel.pem 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Certificate loaded 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Key file: /etc/stunnel/stunnel.pem 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Private key loaded 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Verify directory set to /etc/ssl/certs 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Added /etc/ssl/certs revocation lookup directory 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Could not load DH parameters from /etc/stunnel/stunnel.pem 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Using hardcoded DH parameters 2016.11.14 21:34:19 LOG7[5287:140430154716992]: DH initialized with 2048-bit key 2016.11.14 21:34:19 LOG7[5287:140430154716992]: ECDH initialized with curve prime256v1 2016.11.14 21:34:19 LOG7[5287:140430154716992]: SSL options set: 0x00000004 2016.11.14 21:34:19 LOG5[5287:140430154716992]: Configuration successful 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Service [resourceServer] (FD=12) bound to 127.0.0.1:8080 2016.11.14 21:34:19 LOG7[5287:140430154716992]: Service [tpserver] (FD=13) bound to 127.0.0.1:8444 2016.11.14 21:34:19 LOG7[5293:140430154716992]: Created pid file /var/run/stunnel4.pid 2016.11.14 21:34:25 LOG7[5293:140430154716992]: Service [resourceServer] accepted (FD=3) from 127.0.0.1:41256 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Service [resourceServer] started 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Waiting for a libwrap process 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Acquired libwrap process #0 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Releasing libwrap process #0 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Released libwrap process #0 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Service [resourceServer] permitted by libwrap from 127.0.0.1:41256 2016.11.14 21:34:25 LOG5[5293:140430154827520]: Service [resourceServer] accepted connection from 127.0.0.1:41256 2016.11.14 21:34:25 LOG6[5293:140430154827520]: connect_blocking: connecting 52.43.245.161:8443 2016.11.14 21:34:25 LOG7[5293:140430154827520]: connect_blocking: s_poll_wait 52.43.245.161:8443: waiting 10 seconds 2016.11.14 21:34:25 LOG5[5293:140430154827520]: connect_blocking: connected 52.43.245.161:8443 2016.11.14 21:34:25 LOG5[5293:140430154827520]: Service [resourceServer] connected remote server from 172.31.44.97:34077 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Remote socket (FD=15) initialized 2016.11.14 21:34:25 LOG7[5293:140430154827520]: SNI: host name: 52.43.245.161 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Starting certificate verification: depth=2, /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 2016.11.14 21:34:25 LOG6[5293:140430154827520]: CERT: Verification not enabled 2016.11.14 21:34:25 LOG5[5293:140430154827520]: Certificate accepted: depth=2, /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Starting certificate verification: depth=1, /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA 2016.11.14 21:34:25 LOG6[5293:140430154827520]: CERT: Verification not enabled 2016.11.14 21:34:25 LOG5[5293:140430154827520]: Certificate accepted: depth=1, /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA 2016.11.14 21:34:25 LOG7[5293:140430154827520]: Starting certificate verification: depth=0, /CN=*.greenbuttonalliance.org 2016.11.14 21:34:25 LOG6[5293:140430154827520]: CERT: Verification not enabled 2016.11.14 21:34:25 LOG5[5293:140430154827520]: Certificate accepted: depth=0, /CN=*.greenbuttonalliance.org 2016.11.14 21:34:25 LOG6[5293:140430154827520]: SSL connected: new session negotiated 2016.11.14 21:34:25 LOG6[5293:140430154827520]: Negotiated TLSv1/SSLv3 ciphersuite: AES128-SHA (128-bit encryption) 2016.11.14 21:34:25 LOG6[5293:140430154827520]: Compression: null, expansion: null 2016.11.14 21:34:45 LOG7[5293:140430154827520]: SSL closed on SSL_read 2016.11.14 21:34:45 LOG7[5293:140430154827520]: Sent socket write shutdown 2016.11.14 21:34:56 LOG7[5293:140430154827520]: Socket closed on read 2016.11.14 21:34:56 LOG7[5293:140430154827520]: Sending close_notify alert 2016.11.14 21:34:56 LOG6[5293:140430154827520]: SSL_shutdown successfully sent close_notify alert 2016.11.14 21:34:56 LOG5[5293:140430154827520]: Connection closed: 342 byte(s) sent to SSL, 250 byte(s) sent to socket 2016.11.14 21:34:56 LOG7[5293:140430154827520]: Remote socket (FD=15) closed 2016.11.14 21:34:56 LOG7[5293:140430154827520]: Local socket (FD=3) closed 2016.11.14 21:34:56 LOG7[5293:140430154827520]: Service [resourceServer] finished (0 left) The stunnel.conf file contains the following configuration: ; ************************************************************************** ; * Service defaults may also be specified in individual service sections * ; ************************************************************************** CApath = /etc/ssl/certs ; ************************************************************************** ; * Logging * ; ************************************************************************** debug = 7 output = /home/ubuntu/Git/energyos/OpenESPI-GreenButtonCMDTest/SOAPUI/stunnel.log ; ************************************************************************** ; * Service definitions (at least one service has to be defined) * ; ************************************************************************** ; ************************************************************************** ; * Resource Server * ; ************************************************************************** [resourceServer] accept=localhost:8080 connect=52.43.245.161:8443 ciphers=AES128-SHA client = yes cert=/etc/stunnel/stunnel.pem verify=0 [tpserver] accept=127.0.0.1:8444 connect=localhost:8081 cert=/etc/stunnel/stunnel.pem verify=0 client=no ciphers=AES128-SHA Are there any additional stunnel logging options or debugging techniques you can recommend to help determine why the session is being closed? Does stunnel support wildcard based certificates (i.e. *.greenbuttonalliance.org)? Best regards, Don Donald F. Coffin Technical Manager Green Button Alliance 2335 Dunwoody Crossing Suite E Dunwoody, GA 30338-8221 http://www.greenbuttonalliance.org <http://www.greenbuttonalliance.org/> (949) 636-8571 Mobile