4

次のコードを機能させるのに問題があり、行き詰まりました。POSTリクエスト中に証明書を使用してクライアント側の認証を実行しようとしています。クライアント証明書をサーバーに送信することにのみ関心があり、サーバー証明書を確認する必要はありません。

複製しようとしているcUrlコマンドは次のとおりです。

curl --cacert caCertificate.pem --cert clientCerticate.pem -d "string" https://xx.xx.xx.xx:8443/postRfPerl

スクリプトで次のエラーが発生し続けます。sslハンドシェイクの

失敗2つの質問があります:CRT7およびKEY8変数について何を指す必要がありますか?これは、クライアント証明書認証を使用してPOSTリクエストを送信するための最良の方法ですか?

!/usr/bin/perl
use warnings;
use strict;
use Net::SSLeay qw(post_https);


my $$hostIp = "xx.xx.xx.xx" 
my $hostPort = "8443" 
my $postCommand = "/postRf/string";
my $http_method = 'plain/text';
my $path_to_crt7 = 'pathToCert.pem';
my $path_to_key8 = 'pathToKey.pem';

my ($page, $response, %reply_headers) =
        post_https($hostIp, $hostPort, $postCommand, '',
        $http_method, $path_to_crt7, $path_to_key8
);

print $page . "\n";
print $response . "\n";
4

1 に答える 1

2

LWP::UserAgentIO::Socket::SSLを参照してください。

use strictures;
use LWP::UserAgent qw();
require LWP::Protocol::https;

my $ua = LWP::UserAgent->new;
$ua->ssl_opts(
    SSL_ca_file   => 'caCertificate.pem',
    SSL_cert_file => 'clientCerticate.pem',
);
$ua->post(
    'https://xx.xx.xx.xx:8443/postRf',
    Content => 'string',
);

このコードはテストしていません。

于 2012-05-15T19:58:31.700 に答える