私はPHP/cURLからPerlとLWP :: UserAgentにアプリケーションを移植しています。 WebサーバーにPOSTリクエストを行い、クライアント証明書とキーファイルを提供する必要があります。私は複製しようとしているPHPコードはこれです:SSLとクライアント証明書でLWPを使用する
my $ua = LWP::UserAgent->new();
$ua->ssl_opts(
SSL_verify_mode => 0,
SSL_cert_file => '/path/to/certificate.pem',
SSL_key_file => "/path/to/private.key",
SSL_passwd_cb => sub { return "secretpassword"; }
);
PHPコードがサーバーへの接続に成功したがPerlコードがで失敗します:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSLCERT, "/path/to/certificate.pem");
curl_setopt($ch, CURLOPT_SSLKEY, "/path/to/private.key");
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "secretpassword");
そして、ここでは私のPerlのコードです
SSL読み取りエラー:14094410:SSLルーチン:SSL3_READ_BYTES:sslv3アラートハンドシェイクエラー
私は何が欠けているのか分かりません。
'private.key'(PHP)と' private.pem'(Perl)は、移植の誤植ですか? – amon
複数の引数を[ssl_opts](https://metacpan.org/module/LWP::UserAgent#ATTRIBUTES)に渡すことは記録されていません。安全のために、ssl_optsを複数回呼び出すか、コンストラクタに渡してください。私はそれがうまくいくと思いますが、より安全です。あなたは[バグ/欠落した機能として報告する]こともできます(https://rt.cpan.org/Public/Bug/Report.html?Queue=libwww-perl)。 – Schwern
私は自分のコードを隠してしまっただけで、それはちょっとタイプミスでした。両方ともprivate.keyである必要があります。気づいてくれてありがとうが、それは問題ではない。まだ助けが必要です! :) – kent