[openssl-users] openssl s_server stops on some client connections

Lists@vpnadmin lists at vpnadmin.com.ua
Thu Jan 29 16:17:49 UTC 2015

Hello all!

Please help me to understand, what is the problem with openssl s_server. 
It stops after some connections: LAN clients connect well, but most of 
WAN ones kill the s_server (not only SSL/TLS clients, but telnet to same 
port too).
Same versions OS and openssl on different servers (different providers) 
work well or don't work.
The problem is found for openssl  "1.0.1e-2+deb7u14" on Debian Wheezy 
and for openssl "1.0.1f 6 Jan 2014" on Ubuntu 12.04.

The task is to create TLS connection to SIP provider with asterisk. 
Outgoing TLS-connection to provider have been established. Problem is 
appearing when provider attempts to connect to my host: asterisk is 
working, but TLS connections are refused:

$ openssl s_client -connect
connect: Connection refused

So, port is open on the server, but there is no a service, which listen 
on this port.

Let try to emmulate the SSL/TLS server with the script:

# openssl s_server -tls1 -accept 443 -cert 
/etc/ssl/certs/ssl-cert-snakeoil.pem -key 
/etc/ssl/private/ssl-cert-snakeoil.key -www
Using default temp DH parameters
Using default temp ECDH parameters
  < ... server is waiting for connections ...>

Let attempt to connect to this server again:

$ openssl s_client -connect
no peer certificate available
No client certificate CA names sent
SSL handshake has read 0 bytes and written 308 bytes
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE

On the server side:

gethostbyname failure
    0 items in the session cache
    0 client connects (SSL_connect())
    0 client renegotiates (SSL_connect())
    0 client connects that finished
    0 server accepts (SSL_accept())
    0 server renegotiates (SSL_accept())
    0 server accepts that finished
    0 session cache hits
    0 session cache misses
    0 session cache timeouts
    0 callback cache hits
    0 cache full overflows
   <... here s_server stops ...>

Let restart s_server and try to connect with browser: "" 
or with Telnet: "telnet 443" - result is same.
I think, this is the time to tell about versions:

# uname -a
Linux server 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u1 x86_64 GNU/Linux
# openssl version
OpenSSL 1.0.1e 11 Feb 2013
# dpkg-query -l | grep openssl
ii  openssl 1.0.1e-2+deb7u14                   amd64        Secure 
Socket Layer (SSL) binary and related cryptographic tools

Firewall is open for all outgoing connections and for incoming 
connections to "s_client" hosts.
All servers have direct ethernet connection to providers without NATs, PPPs.

Let try to connect from LAN to same server: connection is established.
Let try to use "TLS Dump" service from http://paranoidsecurity.nl/ : 
connection is established.
Also I see successful connections from  Google and other bots.
Let try to create s_server on another server with another provider and 
the same OS version: connection is established.

Let try to create one more s_server on the one more host (the third 
provider, Ubuntu): there is the same error - "openssl s_server" stops.
About this host:

# uname -a
Linux serv 3.2.0-43-generic-pae #68-Ubuntu SMP Wed May 15 03:55:10 UTC 
2013 i686 i686 i686 GNU/Linux
# openssl version
OpenSSL 1.0.1f 6 Jan 2014

I think, there are external conditions when openssl s_server sometimes 
stops on connections to it. If it is so, then there is a 
Denial-of-Service vulnerability into openssl !

Some more information we can get by ssldump-ing working connection with 
comparison to non-working:
*Working connection:**
# ssldump -A -e -H -T port 5069
TCP: srv-2.local(5069) -> srv-1.local(37926) Seq 471176930.(0) ACK 
1183615929 FIN
TCP: srv-1.local(37926) -> srv-2.local(5069) Seq 1183615929.(29) ACK 
471176931 PUSH
TCP: srv-2.local(5069) -> srv-1.local(37926) Seq 471176931.(0) RST
TCP: srv-1.local(37926) -> srv-2.local(5069) Seq 1183615958.(0) ACK 
471176931 FIN
TCP: srv-2.local(5069) -> srv-1.local(37926) Seq 471176931.(0) RST
TCP: srv-1.local(37927) -> srv-2.local(5069) Seq 2566830925.(0) SYN
TCP: srv-2.local(5069) -> srv-1.local(37927) Seq 3381252077.(0) ACK 
2566830926 SYN
TCP: srv-1.local(37927) -> srv-2.local(5069) Seq 2566830926.(0) ACK 
New TCP connection #1: srv-1.local(37927) <-> srv-2.local(5069)
TCP: srv-1.local(37927) -> srv-2.local(5069) Seq 2566830926.(213) ACK 
3381252078 PUSH
1 1  1422527436.6006 (0.0032)  C>SV3.1(208)  Handshake
         Version 3.1
           51 f1 5c 7e 16 d6 05 73 19 21 5d 30 e6 a9 10 8a
           cd 43 cd f8 45 5b f9 3d 7f 3b d8 b7 80 d0 40 cc
         cipher suites
         Unknown value 0xc014
         Unknown value 0xc00a
         Unknown value 0x88
         Unknown value 0xc002
         Unknown value 0xff
         compression methods
TCP: srv-2.local(5069) -> srv-1.local(37927) Seq 3381252078.(0) ACK 
*[b]TCP: srv-2.local(5069) -> srv-1.local(37927) Seq 3381252078.(1448) 
ACK 2566831139 [/b]**
**1 2  1422527441.6032 (5.0026)  S>CV3.1(58) Handshake*
         Version 3.1

*Non-working connection:*

# ssldump -i eth1 -A -e -H -T port 5069
TCP: mypc.domain.com(40539) -> Seq 2748453215.(0) SYN
TCP: -> mypc.domain.com(40539) Seq 221407102.(0) ACK 
2748453216 SYN
TCP: mypc.domain.com(40539) -> Seq 2748453216.(0) ACK 
New TCP connection #1: mypc.domain.com(40539) <->
TCP: mypc.domain.com(40539) -> Seq 2748453216.(308) ACK 
221407103 PUSH
1 1  1422527941.2773 (0.0203)  C>SV3.1(303)  Handshake
         Version 3.3
           54 ca 0d c5 e6 ea 2f a6 7b 8f 3f e2 07 88 ae 1d
           80 71 14 7f 49 98 70 f3 23 2d 0a 54 c0 c1 1d 0d
         cipher suites
         Unknown value 0xc030
         Unknown value 0x6a
         Unknown value 0x88
         Unknown value 0xff
         compression methods
                 unknown value
TCP: -> mypc.domain.com(40539) Seq 221407103.(0) ACK 
*TCP: -> mypc.domain.com(40539) Seq 221407103.(0) ACK 
2748453524 RST **
**1    1422527941.2783 (0.0010)  S>C  TCP RST*

So, after first handshake stage s_server sends RST TCP-packet and stops.

Here my knowledge and fantasy is over as to decision of this problem.
Give me advice please, how to force the openssl s_server to work.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mta.openssl.org/pipermail/openssl-users/attachments/20150129/46d5e12b/attachment-0001.html>

More information about the openssl-users mailing list