Tôi đang chuyển một ứng dụng từ PHP/cURL sang Perl và LWP :: UserAgent. Tôi cần thực hiện yêu cầu POST đối với máy chủ web và cung cấp chứng chỉ ứng dụng và tệp khóa. Các mã PHP Tôi đang cố gắng để tái tạo là thế này:Sử dụng LWP với SSL và chứng chỉ ứng dụng khách
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");
Và đây là mã Perl của tôi:
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"; }
);
mã PHP thành công kết nối đến máy chủ nhưng mã Perl không thành công với:
Lỗi lỗi đọc SSL: 14094410: Thường trình SSL: SSL3_READ_BYTES: Cảnh báo lỗi bắt tay sslv3
Tôi không thể hiểu được những gì tôi đang thiếu.
Có phải 'private.key' (PHP) và' private.pem' (Perl) là lỗi đánh máy hoặc một phần của quá trình chuyển? – amon
Chuyển nhiều đối số đến [ssl_opts] (https://metacpan.org/module/LWP::UserAgent#ATTRIBUTES) không được ghi lại. Để an toàn, hãy gọi ssl_opts nhiều lần hoặc chuyển chúng vào hàm tạo. Tôi nghĩ rằng nó sẽ xảy ra để làm việc, nhưng an toàn hơn. Bạn cũng có thể [báo cáo nó như là một lỗi/thiếu tính năng] (https://rt.cpan.org/Public/Bug/Report.html?Queue=libwww-perl). – Schwern
Đó chỉ là lỗi đánh máy khi tôi che khuất mã của mình. Nó phải là private.key cho cả hai. Cảm ơn vì đã chú ý nhưng đó không phải là vấn đề. Vẫn cần trợ giúp! :) – kent