By Brian Fitzgerald
Background
We needed a curl that supportsTLS 1.2 to be working on Red Hat el5 in order to migrate off el5. The default curl does not support TLS 1.2
Solution: download and compile curl on el5
Test case
Download Oracle patch p6880880_200000_Linux-x86-64.zip from MOS.
Steps:
Store the URL, the file name, and your cookies in files url.txt, filename.txt , and cook.txt, respectively. For instructions on getting your browser cookies, please refer to Oracle binaries or patch download from Linux command line.
Symptom
$ uname -r 2.6.18-426.el5 $ which curl /usr/bin/curl
$ curl -b cook.txt -o "` cat filename.txt `" -L "` cat url.txt `" curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Prerequisites to compiling curl
perl
Install Perl v5.10.0 minimum
unset LD_LIBRARY_PATH cd /u02/sw/perl/src/perl-5.30.2 ./Configure -de -Dprefix=/u02/sw make make install
openssl
cd /u02/sw/openssl/src/openssl-1.1.1g export PATH=/u02/sw/bin:/bin:/usr/bin ./config --prefix=/u02/sw enable-egd make make install
openldap
cd /u02/sw/openldap/src/openldap-2.4.56 export PATH=/bin:/usr/bin export LD_FLAGS=-L/u02/sw/lib export CPPFLAGS=-I/u02/sw/include ./configure --prefix=/u02/sw --with-ssl=/u02/sw make make install
sasl
cd /u02/sw/cyrus-sasl/src/cyrus-sasl-2.1.27
./configure --prefix=/u02/sw --with-openssl=/u02/sw/ssl
make
make install
ln -s libsasl2.so /u02/sw/lib/libsasl2.so.2
Compile curl
cd /u02/sw/curl/src/curl-7.73.0 ./configure --prefix=/u02/sw --with-ssl=/u02/sw make make install unset LD_FLAGS
Tests
el5
$ ./test.u02.curl.bash 2.6.18-426.el5 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 116M 100 116M 0 0 9357k 0 0:00:12 0:00:12 --:--:-- 17.3M
el6
$ ./test.u02.curl.bash 2.6.32-754.31.1.el6.x86_64 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 116M 100 116M 0 0 4132k 0 0:00:28 0:00:28 --:--:-- 4184k
el7
$ ./test.u02.curl.bash 3.10.0-1062.el7.x86_64 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 116M 100 116M 0 0 42.3M 0 0:00:02 0:00:02 --:--:-- 51.8M
Actual TLS version
Verbose output shows:
$ curl -v -b cook.txt -o “` cat filename.txt `” -L “` cat url.txt `”
. .
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
Conclusion
A locally-compiled curl runs on Red Hat el5, el6, el7