おれのIT日記

2003/01/13 (月)

SSLの続き~Win32のActivePerlでSSLを扱う


今日も休みだ。成人の日だ。どうでもいいけど式典なんか全部やめちまえ。若い衆は、男は全員、自衛隊、女は竹槍特訓でもさせろ。

おっと、これは「わしの日記」ではなかった。一人称こそあまり変わらないが、PC日記なのである。

さて、昨日掲載のPerlでSSLを使おうという試み、会社では動かなかった。手順は正しいはずなのに、悔しいので、もう一度、自宅で調べてみた。PerlにCrypt::SSLeayをインストールするには……
環境は、Win2000、ActivePerl631。

(1) OpenSSLのソースopenssl-0.9.7.tar.gzを入手し、展開。
"install.w32"に書いてある通りの手順で、VC++を用いてコンパイル、テスト。
"install.w32"を読むと、BCC5.5やcygwinでもmakeできそうなのだが、なぜか、VC++でないとうまく行かない。会社の端末でも同様に、VC++5.0(=97)ではうまく出来た。

(2) Crypt-SSLeay-0.45.tar.gzを入手し、展開。
……と、ここで"README"を読んでいて気づいたのだが、

* use nmake for win32

!!! NOTE for Win32 users, few people seem to be able to build
W Crypt::SSLeay successfully on that platform. You don't need
I to because ActiveState has already compiled it for you,
N and is available for their perl builds 618 & 522 as a ppm
3 install. It may also be available for their latest build.
2 Keywords: WinNT, Win95, Win98, 95, 98, NT, 2000
!!! Please see http://www.activestate.com/

……と書いてある……おう、なんてこったい。
でも、ppmコマンドで

search Crypt*

で探すと無いんですよね。無いよ!をい!!

もう知らん。英語は苦手だ。構わずmakeしよう!その方が気持ちいい!!

perl Makefile.PL

すると、OpenSSLをインストールしたディレクトリを聞いてくる。正直に openssl-0.9.7を展開したディレクトリ名を答えると、うまく行く。
そこで、

nmake

すると……失敗する。OpenSSLのdllにパスを通してないから。(^^;;;

その場しのぎのコマンドラインでの環境変数設定でむりやりPATHを通す。通すのは、openssl-0.9.7を展開したディレクトリではなく、その直下のout32dllディレクトリだ。例えば、

C:\openssl-0.9.7\out32dll

みたいな感じである。言っておくがおれのディレクトリはこうじゃない、おれはCドライブの直下にテキトーに穴をばらばらと掘るのは、MS-DOS時代の苦い思い出(ルートディレクトリのファイル数制限)が残っているせいか、大嫌いだ。ちゃんと、体系立てて分類されたディレクトリの下にある。が、それを、ここに書くのは何となく恥ずかしいので、例らしく、上のようにしてみた。話がそれた。それはともかく、こうすると、

nmake

できるじゃないですか。

nmake test

んん、いいじゃないですか。

nmake install

無事終了です!

http://member.nifty.ne.jp/hippo2000/perltips/lwpcook.htmlを参考にして……というより、ただ切り貼りさせてもらっただけの下記のスクリプト

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => 'https://www.helsinki.fi/');
my $res = $ua->request($req);
if ($res->is_success) {
print $res->as_string;
} else {
print "Failed: ", $res->status_line, "\n";
}

を動かして見ると……おっと!またdllにパスを通すの忘れた。これどうやったらインストールできるのだろう?
とりあえず、自力でPATHを通してもう一度動かしてみると……
見事!動きました。やったナリ。

しかーし。これ、自宅環境で遊ぶ分にはいいけど、会社だと、動かなかったんですね。
それじゃ意味無いのよ。これ、仕事なんだから(失笑)

冷静に考えると、環境変数HTTPS_PROXYを設定していたろうか?もしかして名前解決ができていなかったのでは?
いやあるいは、ちゃんとPATHを通していたろうか?

もう一度会社で試して見よう……ええい、

悔しい!!!