PHP/cURL에서 Perl 및 LWP :: UserAgent로 응용 프로그램을 이식합니다. 웹 서버에 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");
을 그리고 여기 내 펄 코드입니다 :
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 코드가 성공적으로 서버에 연결하지만 펄 코드와 함께 실패
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