CGI-BBS > CGI > Perl > Webクライアント作成で、SSL通信についてお尋ねします。


カレッヂ
カレッヂ


質問者 ドラキュラ君  投稿日 2/14(木) 16:31:26
Linux サーバーで、
PerlでのネットワークWebクライアント作成を試みております。

そこで、SSLでの通信についてお尋ねします。

SSLの通信を行なう時には
connect/acceptしたファイルディスクリプタを
SSLに引き渡してやれば良いと、思うのですが、

その具体的な手順がわからないものです。

Perl のサンプルコードがあれば
お教えいただくことは、可能でしょうか・・・


また、そのための準備も定型化されているので簡単に、
暗号通信が実現できるようなのですが・・・


#SSL
#以下に暗号化通信を始めるまでの流れを説明します。
#
#ライブラリを初期化
#SSL_CTX(context structure)を作る
#SSL_CTXのオプション指定
#SSL(個々のSSLコネクション情報を保持)を作る
#ファイルディスクリプタなどを結びつける
#通信の開始
#となります。

初心者の浅知恵で、つくったもので、
不適切な面々がございましょうが、

御教授頂ければありがたいです。よろしくお願い致します。



==========================ソース================================
#日本語
require 'jcode.pl';
use FileHandle;

use Socket;    # Socket モジュールを使う

               # HTTP プロトコルを使う
$port = getservbyname('http','tcp');

               # ホスト名を、IP アドレスの構造体に変換
$iaddr = inet_aton("$PST_HTTPDPOST_DOMAIN")
        or die "$PST_HTTPDPOST_DOMAIN は存在しないホストです。\n";

               # ポート番号と IP アドレスを構造体に変換
$sock_addr = pack_sockaddr_in($port,$iaddr);

               # ソケット生成
socket(SOCKET,PF_INET,SOCK_STREAM,0)
        or die "ソケットを生成できません。\n";

               # 指定のホストの指定のポートに接続
connect(SOCKET,$sock_addr)
        or die "$PST_HTTPDPOST_DOMAIN のポート$portに接続できません。\n";

autoflush SOCKET (1);

               # ファイルハンドル SOCKET をバッファリングしない
select(SOCKET);
$|=1;
select(STDOUT);



##GETに固定する
# WWWサーバにHTTPリクエストを送る
print SOCKET "GET $strGET_DOMAINPAGE HTTP/1.0\r\n";
print SOCKET "Host: $PST_HTTPDPOST_DOMAIN\r\n";
print SOCKET "\r\n";


               # ヘッダ部分を受け取る
while (<SOCKET>){
               # 改行のみの行ならループを抜ける
    m/^\r\n$/ and last;
}

print "Content-type:text/html\n\n";

               # ボディ部分を受け取り、表示

while (<SOCKET>){

   $WPOP = $_;
   &jcode'convert(*WPOP, "sjis");
   $WPOP =~ s/EUC-JP/s-jis /ig;
}



==========================ソース================================


何分、初心者でお手数をおかけいたします。

お忙しいかと思いますが、よろしくお願い申し上げます。

回答者 呑兵衛@大阪  [削除]  投稿日 2/15(金) 23:59:48
う〜〜ぅ。
SOCKETで挑戦する段階ではないようです、多分。
CPANのお世話になりませんか?

余計ですが、このあたり、TCPを勉強しないとPerlすらまともにいかないと思われます。

返信(回答)する


Web裏技