Hello all,

For a remote tls1 web service :

$  # openssl s_client -connect myremote:7002 -tls1
CONNECTED(00000004)
depth=0 CN = xxx, OU = xxx, O = xxx, C = xxx
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = xxx, OU = xxx, O = xxx, C = xxx
verify return:1
---
Certificate chain
...
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIC8zCCAdsCBGCvjhEwDQYJKoZIhvcNAQEFBQAwPjEOMAwGA1UEAxMFRUZXRUIx
...
QG9sNNhQW65rRVmdqy/g0cBbLKRKhmRCS+ajRIzBcO9ZmMe42TES
-----END CERTIFICATE-----
subject=XXX
issuer=XXX
---
No client certificate CA names sent
---
SSL handshake has read 889 bytes and written 509 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-MD5
    Session-ID: 2D9F8D8833A459C16C1D01F0C92F8EB7
    Session-ID-ctx:
    Master-Key: 
1BF68D1AAEEC291A60252ECD63C374661FBBE028FB39A75DDA29E4E3FB6FE34CFC80F875F9E16F9D7C840F185757F583
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1625842735
    Timeout   : 7200 (sec)
    Verify return code: 18 (self signed certificate)
---
closed
$

I can test it alright with an "old" curl
$ curl --version
curl 7.15.4 (sparc-sun-solaris2.9) libcurl/7.15.4 OpenSSL/0.9.7g zlib/1.2.3
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: IPv6 Largefile NTLM SSL libz

...like this
$ curl -skL https://myremote:7002/MyWebService?WSDL
<?xml version="1.0" encoding="UTF-8"?>
...
</soap:address>
  </port>
 </service>
</definitions>

I want to tls1.2-enable myremote:7002 with stunnel, and run a tls1.2 curl 
instead.

My stunnel installation
$ /opt/csw/bin/stunnel -version
Initializing inetd mode configuration
stunnel 5.59 on sparc-sun-solaris2.10 platform
Compiled with OpenSSL 1.0.2u  20 Dec 2019
Running  with OpenSSL 1.0.2o  27 Mar 2018
Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,OCSP,PSK,SNI Auth:LIBWRAP

Global options:
RNDbytes               = 1024
RNDfile                = /dev/urandom
RNDoverwrite           = yes

Service-level options:
ciphers                = HIGH:!aNULL:!SSLv2:!DH:!kDHEPSK
curves                 = prime256v1
debug                  = daemon.notice
logId                  = sequential
options                = NO_SSLv2

I start it with this service config:
[my12]
client = no
accept  = 7002
connect = myremote:7002
cert = /etc/opt/csw/stunnel/stunnel.crt
key = /etc/opt/csw/stunnel/stunnel.key
sslVersion = TLSv1.2
debug = 7

and test it with a fairly recent curl
$ /opt/csw/bin/curl --version
curl 7.61.0 (sparc-sun-solaris2.10) libcurl/7.61.0 OpenSSL/1.0.2o zlib/1.2.8 
libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4)
Release-Date: 2018-07-11
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb 
smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 
UnixSockets HTTPS-proxy PSL Metalink

Alas, the recent curl call 
$ /opt/csw/bin/curl -skL https://myremote:7002/MyWebService?WSDL

...fails with exit status 23

In verbose mode we get

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Failed to set TCP_KEEPALIVE on fd 4
* Connected to localhost (127.0.0.1) port 7002 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/opt/csw/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: C=TS; ST=Westfarthing; L=Hobbiton; O=Thorin and Company; 
OU=Burglars; CN=ahost.theshire.net; [email protected]
*  start date: Jun 30 09:24:25 2021 GMT
*  expire date: Jun 30 09:24:25 2022 GMT
*  issuer: C=TS; ST=Westfarthing; L=Hobbiton; O=Thorin and Company; 
OU=Burglars; CN=ahost.theshire.net; [email protected]
*  SSL certificate verify result: self signed certificate (18), continuing 
anyway.
> GET /MyWebService?WSDL HTTP/1.1
> Host: localhost:7002
> User-Agent: curl/7.61.0
> Accept: */*
>
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
* Failed writing body (0 != 7)
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
$

I tried various curl flags - nothing works.

In the meantime stunnel logs no errors
Jul  9 16:16:45 acuapd30 stunnel: [ID 801593 daemon.notice] LOG5[18]: Service 
[my12] accepted connection from 127.0.0.1:39165
Jul  9 16:16:45 acuapd30 stunnel: [ID 801593 daemon.notice] LOG5[18]: 
s_connect: connected 10.240.28.69:7002
Jul  9 16:16:45 acuapd30 stunnel: [ID 801593 daemon.notice] LOG5[18]: Service 
[my12] connected remote server from xxx.yyy.zzz.www:39166
Jul  9 16:17:10 acuapd30 stunnel: [ID 801593 daemon.notice] LOG5[18]: 
Connection closed: 7 byte(s) sent to TLS, 116 byte(s) sent to socket

What am i doing wrong!?

Thanks in advance!
_______________________________________________
stunnel-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to