多くの参考サイトや本では、LWPモジュール群を利用してのSSLアクセスには「Crypt::SSLeay」モジュールが必要と説明されているが、どうやら「Net::SSLaey」モジュールがあれば可能なようだ。
もちろんサーバにSSL環境(OpenSSLとかmodSSLとか)があるっていうのが前提ではあるが。
OpenSSLとLWPのつなぎ役をしてくれるのがCrypt::SSLeayだが、もともと、OpenSSLとSSLeayとの高度な機能インタフェースを提供するモジュールが「Net::SSLaey」モジュールである。
以下確認作業
■まず適当なスクリプトでPerlの@INCの中身を確認----------------------------------------------------------------------------------------------
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
foreach(@INC){
print $_.'\n';
}
exit;
----------------------------------------------------------------------------------------------
■結果↓
----------------------------------------------------------------------------------------------
/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0
/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.10.0
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/5.10.0
/usr/lib/perl5/site_perl
.
----------------------------------------------------------------------------------------------
■次に、Crypt::SSLeayとNet::SSLeayが入っているか確認↓
----------------------------------------------------------------------------------------------
(コマンド)
$ su
# cd /
# find -path *Crypt/SSL*
#
(↑Crypt::SSLeayは入っていない)
# find -path *Net/SSL*
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net/SSLeay
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net/SSLeay/Handle.pm
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net/SSLeay.pm
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/https_cat.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/do_https4.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/get_httpx3.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/get_http.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/put_http.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/want_read.al
・
・
・
(以下省略)
(↑@INCでは「/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi」にNet::SSLeayが入っている)
----------------------------------------------------------------------------------------------
■試しに名前を変えてみる↓
----------------------------------------------------------------------------------------------
# cd /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net
# mv SSLeay.pm SSLeay.pm2
----------------------------------------------------------------------------------------------
■スクリプト↓でhttpsにリクエストしてみる
----------------------------------------------------------------------------------------------
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
my $ua = LWP::UserAgent->new();
my $url = "https://www.hogehoge.jp"; # 実在するセキュアサイト
$request = &HTTP::Request::Common::GET($url);
$response = $ua->request($request);
print "Content-type: text/plain\n\n";
print $response->status_line;
exit;
----------------------------------------------------------------------------------------------
■実行結果↓
----------------------------------------------------------------------------------------------
501 Protocol scheme 'https' is not supported
(httpsプロトコルはサポートしていません)
----------------------------------------------------------------------------------------------
■SSLeay.pmを元に戻す↓
----------------------------------------------------------------------------------------------
# mv SSLeay.pm2 SSLeay.pm
----------------------------------------------------------------------------------------------
■さっきのスクリプトをもう一度実行↓
----------------------------------------------------------------------------------------------
302 Found
(ファイルが存在します=接続成功)
----------------------------------------------------------------------------------------------
めでたしめでたし。
もちろんサーバにSSL環境(OpenSSLとかmodSSLとか)があるっていうのが前提ではあるが。
OpenSSLとLWPのつなぎ役をしてくれるのがCrypt::SSLeayだが、もともと、OpenSSLとSSLeayとの高度な機能インタフェースを提供するモジュールが「Net::SSLaey」モジュールである。
以下確認作業
■まず適当なスクリプトでPerlの@INCの中身を確認----------------------------------------------------------------------------------------------
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
foreach(@INC){
print $_.'\n';
}
exit;
----------------------------------------------------------------------------------------------
■結果↓
----------------------------------------------------------------------------------------------
/usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0
/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.10.0
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.10.0/i386-linux-thread-multi
/usr/lib/perl5/5.10.0
/usr/lib/perl5/site_perl
.
----------------------------------------------------------------------------------------------
■次に、Crypt::SSLeayとNet::SSLeayが入っているか確認↓
----------------------------------------------------------------------------------------------
(コマンド)
$ su
# cd /
# find -path *Crypt/SSL*
#
(↑Crypt::SSLeayは入っていない)
# find -path *Net/SSL*
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net/SSLeay
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net/SSLeay/Handle.pm
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net/SSLeay.pm
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/https_cat.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/do_https4.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/get_httpx3.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/get_http.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/put_http.al
./usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/auto/Net/SSLeay/want_read.al
・
・
・
(以下省略)
(↑@INCでは「/usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi」にNet::SSLeayが入っている)
----------------------------------------------------------------------------------------------
■試しに名前を変えてみる↓
----------------------------------------------------------------------------------------------
# cd /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Net
# mv SSLeay.pm SSLeay.pm2
----------------------------------------------------------------------------------------------
■スクリプト↓でhttpsにリクエストしてみる
----------------------------------------------------------------------------------------------
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
my $ua = LWP::UserAgent->new();
my $url = "https://www.hogehoge.jp"; # 実在するセキュアサイト
$request = &HTTP::Request::Common::GET($url);
$response = $ua->request($request);
print "Content-type: text/plain\n\n";
print $response->status_line;
exit;
----------------------------------------------------------------------------------------------
■実行結果↓
----------------------------------------------------------------------------------------------
501 Protocol scheme 'https' is not supported
(httpsプロトコルはサポートしていません)
----------------------------------------------------------------------------------------------
■SSLeay.pmを元に戻す↓
----------------------------------------------------------------------------------------------
# mv SSLeay.pm2 SSLeay.pm
----------------------------------------------------------------------------------------------
■さっきのスクリプトをもう一度実行↓
----------------------------------------------------------------------------------------------
302 Found
(ファイルが存在します=接続成功)
----------------------------------------------------------------------------------------------
めでたしめでたし。

コメントする