Thanks Dave, I have approached the server operator about the security shortcomings that you pointed out. In the interim I used your suggestion and altered the cipher list to SSL_cipher_list DEFAULT:!ECDH.
This has sorted the problem. I am very grateful for your assistance. Peter. On 21 December 2013 08:08, Dave Thompson <dthomp...@prinpay.com> wrote: > I don’t use Fedora and track its versions, but assuming those are recent > > RedHat including Fedora recently enabled ECC in its openssl packages > > after years of excluding it over concerns about Certicom’s patent. > > That increases the number of cipher suites in the Client Hello message > > and also adds two extensions (although fairly small for RH) which makes > > the Hello message bigger, and some servers are known to hang or otherwise > > fail when the Hello message is bigger than used to be “normal” a decade > ago. > > Apparently api.tab.com.au:443 is such; tested with s_client > 255 hangs. > > (In a 404 it claims to be “WebLogic Server”, which I don’t know about.) > > > > I also observe this server does not implement 5746 (secure renegotiation) > > and will negotiate only TLSv1(.0) and 4 akRSA suites (RC4, 3DES, both AES) > > suggesting it is rather old. If you can’t get the server operator(s) to > fix their > > server, you need to get openssl as used by perl to send a shorter > ClientHello. > > The most straightforward way is to reduce the set of suites offered, > > especially since the server implements only 4. > > > > According to perldoc for the best perl I have (5.6.1 ActivePerl for > Windows) > > but not tested, LWP::UserAgent can take a hash ssl_opts which apparently > are > > passed (eventually) to openssl. Just making SSL_cipher_list DEFAULT:!ECDH > > should reduce the cipher list enough, although you might want even more > > restrictive settings for other reasons, like in general you should always > > prohibit “export” and “LOW” ciphers which have been broken for years. > > Alternatively it looks like you can set SSL_version to exclude TLSv12 or > just > > force TLSv1; that excludes a bunch of ciphers and also the sigalgs > extension, > > which should make Hello short enough. > > > > > > > > *From:* owner-openssl-us...@openssl.org [mailto: > owner-openssl-us...@openssl.org] *On Behalf Of *Peter Abbott > *Sent:* Thursday, December 19, 2013 17:29 > *To:* openssl-users@openssl.org > *Subject:* *** Spam *** Upgrade Breakage of Perl Script > > > > Hi, > > > > I have a simple perl script which supplies a username and account password > to a server. The server in turn returns a password token for further > operations. The script does not specifically use openssl but the perl > modules LWP::UserAgent and or HTTP::Request must do. The script worked > perfectly up to openssl version 1.0.1e-4.fc19.x86_64. Further upgrades to > 1.0.1e-28.fc19 and 1.0.1e30.fc19 just hang somewhere at the handshake stage. > > > > I am only a novice and have a limited understanding of what is going on. > Part of the script is as follows: > > > > #!/usr/bin/perl -w > > > > use strict; > > use LWP::UserAgent; > > use HTTP::Request; > > > > my $message = '<?xml version="1.0" encoding="utf-8"?> > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:ser="http://service.thirdparty.api.neo.tabcorp.com.au/"> > > <soapenv:Header/> > > <soapenv:Body> > > <ser:authenticateAccount> > > <apiMeta> > > <deviceId>1000011</deviceId> > > > <jurisdictionId>2</jurisdictionId> > > > <requestChannel>1</requestChannel> > > > <usernamePasswordToken></usernamePasswordToken> > > </apiMeta> > > <authRequest> > > <accountId>xxxxxx</accountId> > > > <accountPassword>yyyyyyyy</accountPassword> > > </authRequest> > > </ser:authenticateAccount> > > </soapenv:Body> > > </soapenv:Envelope>'; > > > > my $keyn; > > my $userAgent = LWP::UserAgent->new(); > > my $request = HTTP::Request->new(POST => ' > https://api.tab.com.au/tabapi/services/thirdPartyAuthenticate'); > > $request->header(SOAPAction => '" > http://service.thirdparty.api.neo.tabcorp.com.au/"'); > > $request->content($message); > > $request->content_type("text/xml; charset=utf-8"); > > my $response = $userAgent->request($request); > > if($response->code == 200) { > > print $response->as_string; > > } > > else { > > print "zs" > > } > > > > > > Can anyone shed some light on what is happening here or what I can do to > remedy the problem? > > > > Thanks, > > Peter. >