curl -i --cert /Downloads/file.pfx:secret_key ...
--cert
для сертификата клиента
...
SSL_ca_file => '/Downloads/file.pfx',
SSL_ca_file вместо этого для хранилища доверенных сертификатов. Т.е. вы используете один и тот же файл для совершенно разных задач. Для использования в качестве клиентского сертификата вы должны вместо этого использовать параметр SSL_cert_file
:
...
SSL_cert_file => '/Downloads/file.pfx',
В последней версии IO :: Socket :: SSL он должен иметь возможность прозрачной обработки файла PFX. Я не уверен, что он будет работать с PFX-файлом, защищенным паролем, но вы можете попытаться установить пароль с помощью SSL_passwd_cb :
SSL_passwd_cb => sub { "secret_key" },
Если это не работает и с в старых версиях IO :: Socket :: SSL вам потребуется извлечь сертификат и ключ в формате PEM из файла PFX.