電気ウナギ的○○

About Home

UserAgent 使った SSL 通信でハマってしまった

shinoda (2015年5月15日 14:03)
サーバ移行案件で、ある Perl プログラムを新サーバに移行した。

そのプログラムは、LWP::UserAgent モジュールを使って、外部の HTTPS サーバと通信をしている。
まあ、写真のデータを取ってくるだけなんですけど。

ところが、新しいサーバで HTTPS 接続しても空のデータしか取れない。

Crypt::SSLeay
IO::Socket::SSL

や、ついでに

Net::SSLeay

とかとか。SSL 通信を行なうためのモジュールは入っているのに・・・である。

試しに、

#!/usr/bin/perl
use HTTP::Status;
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$ua->agent("LWP::GETHEAD");
$url = $ARGV[0];
$request = new HTTP::Request HEAD => $url;
$response = $ua->request($request);
print "Content-Type:\t", $response->header("Content-Type"),"\n";
print "Content-Length:\t", $response->header("Content-Length"),"\n";
print "Last-Modified:\t", $response->header("Last-Modified"),"\n";
print "Expires:\t", $response->header("Expires"),"\n";
print "Server: \t", $response->header("Server"),"\n";

こういうスクリプトを作って走らせてみても、

# perl test.pl https://www.exsample.jp/
Content-Type:   text/plain
Content-Length:
Last-Modified:
Expires:
Server:

という寂しい結果が返ってくるだけ。

なんじゃ?と思ったのだが、そう言えば IO::Socket::SSL モジュールのバージョンが上がって、「ホスト同士で証明書交換せえよ。それが出来んのだったら『セキュリティ的には緩くなっちゃうのがわかってて、あえて証明書は用意してないんですよ』という意思表明のために、verify_hostname オプションを明示的に書けよ」ということになったのを思い出した。以前、このブログにも書いたことあるけどな。

というわけで、スクリプトに、

#!/usr/bin/perl
use HTTP::Status;
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$ua->agent("LWP::GETHEAD");
$ua->ssl_opts( verify_hostname => 0 );
$url = $ARGV[0];
$request = new HTTP::Request HEAD => $url;
$response = $ua->request($request);
print "Content-Type:\t", $response->header("Content-Type"),"\n";
print "Content-Length:\t", $response->header("Content-Length"),"\n";
print "Last-Modified:\t", $response->header("Last-Modified"),"\n";
print "Expires:\t", $response->header("Expires"),"\n";
print "Server: \t", $response->header("Server"),"\n";

という具合に一文入れてやるだけで、

# perl test.pl https://www.exsample.jp/
Content-Type:   text/html
Content-Length: 18469
Last-Modified:  Sun, 01 Mar 2015 00:04:16 GMT
Expires:
Server:         Apache

このように通信可能となる。

そう言えば、この当該プログラムを書いたの、6年も前だ(^^;

長く動いているプログラムは、移行の時に色々ある(^^;

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/3420

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE