The SSL handshake failure in the debug output can mean multiple things, among them that the server does not like your certificates. You could try the following things to narrow down the problem:
- Use openssl s_client -connect ... -key BW_key.pem -cert BW_cert.pem. If thus succeeds the problem might be inside LWP/IO::Socket::SSL (diferent cipher set or something else). If you don't have the openssl binary you might also try curl or wget where you should also be able to specify a client certificate.
- Make a packet capture and look at it with wireshark. See at which stage of the SSL handshake it fails. If you need help with that post the packet capture to cloudshark.org