in reply to Net::FTPSSL Cert and Key question

Net::FTPSSL uses IO::Socket::INET; in addition, for certificates and keys, you'll also need to use IO::Socket::SSL.

The error message said that the handshake failed because of a bad certificate, but I doubt that because IO::Socket::INET doesn't appear to check certs, at least not in the way we would expect it to. I would run your program again, adding IO::Socket::SSL to the mix and see what happens. Ideally, both the server and client should have certificates and keys for a secure transaction. If you don't have them, I'd recommend that you get them.

References:

SSL Certificate-HOWTO

Getting a private key and a real certificate

Understanding and Investigating SSL Issues

HOWTO-Certificates