我將一個應用程序從PHP/cURL移植到Perl和LWP :: UserAgent。我需要對Web服務器執行POST請求並提供客戶端證書和密鑰文件。我試圖複製的PHP代碼是這樣的:使用帶有SSL和客戶端證書的LWP
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代碼:
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代碼失敗:
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
當我隱藏我的代碼時,這只是一個錯字。它應該是私有的。感謝您的注意,但這不是問題。仍然需要幫助! :) – kent