CGI-BBS > SO−HO > ショッピングバスケット > Ver4.2でのSSL導入について


カレッヂ
カレッヂ


質問者 ふ〜さん  投稿日 1/18(金) 20:34:07
こちらの過去ログを参照していろいろ試したのですが、
どうしてもcargo.cgiからorder.cgiに移行しません。ご教授お願いいたします。
ちなみに私はCGIをなんとか設置出来るレベルです。

使用してるレンタルサーバーはCGIファイルをそれぞれ
https://××××××.com/cgi-gin/とhttp://www.××××××.com/cgi-bin/
に置かなければ動作しません。

やった事
●「setup.pl」の「$order_cgi = 'order.cgi';」を
「$order_cgi = 'https://××××××.com/cgi-bin/order.cgi';」
に修正

●cargo.cgiの
「print "Set-Cookie: $cookie_name=$set_cookie\n";」

「print "Set-Cookie: $cookie_name=$set_cookie; domain=××××××.com;path =/; \n";」
に修正

●order.cgiの
「require "./setup.pl";」

「require "http://www.××××××.com/cgi-bin/setup.pl";」
に修正

●「jcode.pl」を最新のものに変更

他のファイルについてはデフォルトのまま
http://www.××××××.com/cgi-bin/」以下に納めております。
記述ミス、または他に修正個所があるのでしょうか?
パーミッションにつきましては各ファイルとも確認しました。
どうぞよろしくお願いいたします。
回答者 呑兵衛@大阪  [削除]  投稿日 1/19(土) 02:06:24
setup.pl の
#◆プログラムを設置した場所 http://サーバ名/この部分をそのまま設定する/cargo.cgi
$SCRIPT_AERA = '/~user/cargo/';
を確認してください。
そちらの設定では
$SCRIPT_AERA = '/cgi-bin/';
になると思います。
それから

> print "Set-Cookie: $cookie_name=$set_cookie; domain=××××××.com;path =/; \n";

print "Set-Cookie: $cookie_name=$set_cookie; domain=\"××××××.com\"; path = \"/cgi-bin/\"; secure; \n";
に変更してください。

また
●order.cgiの
> 「require "./setup.pl";」
> を
> 「require "http://www.××××××.com/cgi-bin/setup.pl";」
> に修正

は修正しなくてもいいかもしれません。
サーバーの httpd.conf の設定で、通常、 http: で呼び出されるファイルと
https: や ftp: で呼び出されるファイルの FQDN は一定ではないので、
サーバー管理者に問い合わされるのも解決の早道です。
質問者 ふ〜さん  [削除]  投稿日 1/19(土) 20:27:57
さっそくのご指導、ありがとうございます。
いろいろ試してみましたが、まだ成功してません。
>print "Set-Cookie: $cookie_name=$set_cookie; domain=\"××××××.com\"; path = \"/cgi-bin/\"; secure; \n";
>に変更してください。

ご指示の通り変更いたしますと、別フレームにはかごに商品が入るものの
cargo.cgiに移行すると「何も選択されてません」となります。
「print "Set-Cookie: $cookie_name=$set_cookie; domain=\"××××××.com\";\n";」
までの記述ですと大丈夫でした。
ここの「secure」という記述は「https://××××××.com/cgi-bin/」
までの相対パスを記述するという事でしょうか?

>> 「require "./setup.pl";」
>> を
>>「require "http://www.××××××.com/cgi-bin/setup.pl";」
>> に修正

>は修正しなくてもいいかもしれません。

で元の「require "./setup.pl";」に設定を戻すと
Can't locate ./setup.pl in @INC (@INC contains: /usr/lib/perl5/5.00503/i386-linux /usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i386-linux /usr/lib/perl5/site_perl/5.005 .) at order.cgi line 3.
[Sat Jan 19 19:04:55 2002] [error] [client 61.125.196.7] Premature end of script headers: /ssl/cgi-bin/order.cgi
というエラーログが記録されておりました。
絶対パスでもやはり駄目で
相対パス「"../../cgi-bin/setup,pl"」で試してみるとorder.cgiに移行しました!

「特定商取引に関する法律に伴う侮ヲ事項ファイルが読み出せません」
と文字化けのおまけ付きでエラーが出ました。
一歩前進はしたのですが、、、
何か対応策はございますでしょうか?
回答者 呑兵衛@大阪  [削除]  投稿日 1/19(土) 22:19:36
domain は com、net、org、などgTLDの場合、 . は一つでもかまわない規定なので、これでいいと思いますが、
secure はクッキーに焼き付けるデータで、SSLでは必須項目ですが、; path=""; secure としても同じになるでしょうか?

文字化けの件
order.cgiの sub mailform 、sub confirm、sub lockの
〜〜表\示〜〜
〜〜お申\し込み〜〜
〜〜申\込み〜〜
〜〜可能\性〜〜
のように「表」、「申」、「能」の後ろに\を入れてください。

setup.pl で
$base_dir = "./data/";

$base_dir = "../../data/";
にするとどうでしょうか?
質問者 ふ〜さん  [削除]  投稿日 1/19(土) 23:43:07
呑兵衛@大阪様、ご指導ありがとうございます。
すでに何時間トライ&エラーを繰り返してるか判らなくなりました(汗)

>path=""; secure としても同じになるでしょうか?

やはり
「print "Set-Cookie: $cookie_name=$set_cookie; domain=\"××××××.com\";\n";」
で無いと別フレームのかご表示部分にエラーが出ます。

文字化けの件
解消しました。ありがとうございました。

>$base_dir = "../../data/";
>にするとどうでしょうか?

こうすると全くかごが読み込めませんでした。

現在の各ファイルの設置場所は
https://××××××.com/cgi-gin/
  「order.cgi」
http://www.××××××.com/cgi-bin/
  「setup.pl」「cargo.cgi」「data」他です。
全てのファイルをSSL以下にまとめるというのも過去ログに
ありましたが、動作が遅くなる問題と、すでに検索エンジンに
登録されてる現在のノンSSLファイルを移動する損失を考えると
なんとかorder.cgiの移動だけに止めたいと考えております。
よろしくお願いいたします。
回答者 呑兵衛@大阪  [削除]  投稿日 1/20(日) 16:31:53
いまいちサーバーのディレクトリ構造が理解できないのでなんともです。

○setup.pl
$SCRIPT_AERA = '/cgi-bin/';
$base_dir = './data/';(そのまま)
$order_cgi = 'https://XXXXX.com/cgi-bin/order.cgi';
setup.pl をもう一つ
https で指定されている cgi-bin ディレクトリにも置き
こちらは
$order_cgi = '/home/to/secure_directory/order.cgi';
のように絶対パス表記する。

○order.cgi
setup.pl の位置は、絶対パスで
require '/home/to/secure_directory/setup.pl'
などに変更。
sub mailform、sub confirm(こちらは申込み撤回部分) の
<form method=POST action="order.cgi">

<form method=POST action="$order_cgi">

ファイルを https のディレクトリへFTP。アスキー 755。

CGIファイルすべてをSSLに移行させても、ショッピングバスケットの玄関は
cgi-bin 以下のディレクトリにはないので、検索サイトの問題は発生しないはずです。
以上により、cargo.cgi を除き、設定を変えた setup.pl order.cgi も
SSL指定ディレクトリ内でアクセスできるようにします。
SSLで仕事をする間に非SSLへアクセスすれば、SSLで仕事をする意味が
なくなります。
質問者 ふ〜さん  [削除]  投稿日 1/20(日) 19:59:54
呑兵衛@大阪様、この度はお手数をお掛けしております。
ご指示の通りやってみましたが、やはり駄目でした。

当方のサーバーはFTPでは
user
I
  cgi-bin
  I
  home
  I
ssl--cgi-bin
      --home

となっております。
すなわちcgi home sslが同一ディレクトリに、ssl以下にまたcgiとhomeがございます。

サーバー会社から頂いた相対パスの書き方の回答は
=============================
たとえば、/cgi-bin/cargo.cgi が設置してある箇所から SSLの領域である
/ssl/cgi-bin/order.cgi を指定する場合は、以下のような指定方法が
あるかと存じます。

相対パス    ../ssl/cgi-bin/
URL         https://×××.com/cgi-bin/order.cgi
=============================
でした。
回答者 呑兵衛@大阪  [削除]  投稿日 1/21(月) 00:07:31
説明を図式し、必要なファイルを配置すると以下になるはずですが、、、、、?

user(http://www.XXXXX.com/)
 |
 |---frame_sample.html
 |---blank.html
 |---index.html
 |---index2.html
 |
 |---/home(これなに?)
 |
 |---/cgi-bin
 |  |
 |  |---/tmp
 |  |---/data
 |  |  |
 |  |  |---data.csv
 |  |  |---data2.csv
 |  |  |---jucyu.txt
 |  |  |---hanbai.txt
 |  |
 |  |---jcode.pl
 |  |---search.cgi
 |  |---setup.pl---*A $order_cgi = 'https://XXXXX.com/cgi-bin/order.cgi';
 |  |       *B $SCRIPT_AERA = 'XXXXX.com';
 |  |---cargo.cgi---ここから/ssl/cgi-bin/order.cgiに飛ぶには *A の表記
 |
 |---/ssl(https://XXXXX.com/)
    |
    |---/home(これなに?)
    |
    |---/cgi-bin
      |
      |---setup.pl  *D $base_dir = "../../cgi-bin/data/";
      |       *E $tmp_dir = "../../cgi-bin/tmp/";
      |---order.cgi *C require './setup.pl';

order.cgi が選択商品データを読み出さない場合の緊急措置
order.cgi のデータ読み込み部分(30行目あたり)
if ($name =~ /^_|^ORDER/) { ; }

if ($name =~ /^_|^ORDER/) { if ($value =~ /^\d{14}/) { $COOKIE{'CART'} = $value; } }
質問者 ふ〜さん  [削除]  投稿日 1/22(火) 01:42:44
呑兵衛@大阪様、度々のご指導、心よりお礼申し上げます。

もう頭が混乱してまいりましたので、cgi部分を全てSSL領域へ移動させてみました。
(検索エンジンの問題もご指導のとおり問題無い事に気が付きましたので)
マック、ウィンのIE.NCでおおむね良好に動作してたのですが、
唯一WIN/IE6のプライバシー設定を「中」以上にするとクッキーがはじかれてしまいました。
デフォルト設定が「中」なので、仕方なしでは済まされないと思いました。
私の勝手な想像ですが、SSL領域からのクッキーをサードパーティーからのクッキーと
認識してるようです(泣)
この方法で行くなら商品紹介ページを全てSSL領域へ移動しなくてはいけないのかも
しれません。

再度、order.cgiだけをSSl領域へ移動する事で考え直してみます。

>/home(これなに?)

私の借りてるサーバーはhome以下にCGI以外のファイルを置くように規定されてます。
すなわちindex.htmlはhome/index.htmlとなります。
お教え頂いた図式を参考に一からやり直してみます。
ありがとうございました。
回答者 呑兵衛@大阪  [削除]  投稿日 1/22(火) 14:08:44
Set-Cookie  ; secure
多分はじかれている原因は、これがないためですね。

返信(回答)する


Web裏技