fyi,

all the ssl 'magic' for haproxy appears to be in

        src/ssl_sock.c

which references

         *Acknowledgement:
         *   We'd like to specially thank the Stud project authors for a very 
clean
         *   and well documented code which helped us understand how the 
OpenSSL API
         *   ought to be used in non-blocking mode. This is one difficult part 
which
         *   is not easy to get from the OpenSSL doc, and reading the Stud code 
made
         *   it much more obvious than the examples in the OpenSSL package. 
Keep up
         *   the good works, guys !
         *
         *   Stud is an extremely efficient and scalable SSL/TLS proxy which 
combines
         *   particularly well with haproxy. For more info about this project, 
visit :
         *       https://github.com/bumptech/stud

stud's not been updated in years, and per

        https://github.com/bumptech/stud

                Stud is now officially abandonware, thanks for playing.
                Recommended alternative: https://github.com/varnish/hitch

Stud's exemplar usage of the OpenSSL api is likely not the best reference for 
modern openssl api usage.

Taking a look, instead, at the usage approach taken by recommended 'hitch',

        git clone https://github.com/varnish/hitch.git
        cd hitch

their much-simpler, openssl 1.1.0-ready implementation code is in,

        ./src/hssl_locks.c

which notes, correctly

        /*
         * OpenSSL 1.1 has a new threading implementation that no longer
         * requires the application to set its own locking callbacks.
         */

and avoids reference to, and use of, the previously mentioned deprecated 
symbols (cref: https://www.openssl.org/news/openssl-1.1.0-notes.html)

it builds/installs

        ./bootstrap
        ./configure \
        --prefix=/usr/local/hitch \
        SSL_CFLAGS="-I/usr/local/openssl/include" \
        SSL_LIBS="-L/usr/local/openssl11/lib64 
-Wl,-rpath,/usr/local/openssl11/lib64 -lssl" \
        CRYPTO_CFLAGS="-I/usr/local/openssl/include" \
        CRYPTO_LIBS="-L/usr/local/openssl11/lib64 
-Wl,-rpath,/usr/local/openssl11/lib64 -lcrypto"
        make -j4
        make install

with no errors,

        ldd /usr/local/hitch/sbin/hitch | egrep "ssl|crypto"
                libssl.so.1.1 => /usr/local/openssl11/lib64/libssl.so.1.1 
(0x00007f8c27cb6000)
                libcrypto.so.1.1 => /usr/local/openssl11/lib64/libcrypto.so.1.1 
(0x00007f8c2780d000)

        /usr/local/hitch/sbin/hitch --version
                hitch 1.4.8

particularly with tls1.3-capable openssl 1.1.1 "ComingSoon(tm)", might be worth 
a review


Reply via email to