![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
情報漏えい防止のため、PCからのアクセスをSSLに限定したいのですが、SSLかどうかを判別する方法で困っています。
あるサーバでは以下のスクリプトでうまく稼動しています。
しかし、別のサーバでは「サーバが見つかりません」となってしまいます。
// SSLかチェック(SETTLEMENT_SCRIPTにはSSLのアドレス)
//if( !$_SERVSER["SSL_SERVER_DN"] && !$_SESSION["user_mobile"] ) header("Location: " . SETTLEMENT_SCRIPT );
$_SERVSERの値を調べてみたら通常のページでもSSLのページでも値が変わる変数はなく、$_SERVSER["SSL_SERVER_DN"]という変数もないためでした。
レンタルサーバに問い合わせると、「SSLはもっと前の段階で振り分けているため機能しない」というようなことを言われました。(聞いてもよく分からなかった)
こういう場合、どう処理してよいのかわかりません。
携帯でアクセスしてきたユーザーがアドレスを見て、同じURLでPCでアクセスしてきてしまったらお手上げです。
携帯もSSLで接続できればいいのですが、携帯で接続しようとすると「このサイトは安全でない可能性があるため接続できません(発行者エラー)」と表示され、接続できません。
どうしたらよいのでしょう?
環境:
PHP Version 4.3.0
SSLはレンタルサーバの共有SSL
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
PHPは解らないのですが、perlで行った事があります。
同様のSERVER_PORT=80のサーバでSSLかどうか確認するために、他の環境変数でチェックしました。
プロキシサーバを経由するためなのか、HTTP_VIA(phpにあるかどうかはわからないけれど)と言う環境変数ができていたので、それでチェックしました。
httpと、httpsで環境変数一覧を出して比較してみると常時違う環境変数があれば、それでチェックできるかもしれません。
No.5
- 回答日時:
SERVER_PORT => 80
ということは、SSLがかかってないということだと思いますが・・・。
HTTPと違うポートでリスニングするというのは大前提ではないのかいな?
apache(レンタルサーバ)の設定がちがうんじゃないでしょうか?
DOCUMENT_ROOTが違うとか・・・
スクリプトで悩む前に レンタルサーバー側をよく調べたほうがいいと思います。
この回答への補足
レンタルサーバーに問い合わせてみました。
以下、回答です。
-----------------------------------------------------
■SSL通信につきまして
弊社で提供しておりますの共有SSLの仕組みにつきまして説明させていただきます。
SSLアクセラレーターを通じてSSL通信を実現しております。
SSL通信を行う際、閲覧者とSSLアクセラレーター間はSSL通信を行いますが、
SSLアクセラレーターからお客様サーバー間は通常のHTTP通信となります。
従いまして、お客様のご指摘通り、SSL通信であるか否かの判定が行えない環境で
ございます。
■独自SSLでは
共有SSLのほかにベリサインなどの独自SSLの場合につきましても、同様の仕組みを
採っていますが、こちらに関しましてはお客様のご要望に応じてSSLアクセラレーター
経由ではなく、サイトに直接、証明書をインストールする対応をさせていただいて
おります。
この場合にはSSL通信の判定が可能になります。
大変恐縮ではございますが、結果としまして共有SSLの場合には、お客様のご要望に
ございます、SSL通信の判定が行えない環境でございます。
-----------------------------------------------------
ということは、あきらめるしかないということですね。。。
No.4
- 回答日時:
>>$_SERVSERの値を調べてみたら通常のページでもSSLのページでも値が変わる変数はなく、$_SERVSER
を見落としてました。
$_SERVSER ?? $_SERVER とは違うもの?
↓も使えるかもです。
.htaccess
<Files *>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !^DoCoMo/ [NC]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ([^/]*)$ https://%{HTTP_HOST}/$0
</Files>
(DoCoMoじゃないやつが、80でアクセスしてきたら、httpsにとばす)
この回答への補足
回答ありがとうございます。
すいません$_SERVSER → $_SERVER の間違いです。
SERVER_PORT も調べてみましたが、両方とも80なので不可です(;;
No.3
- 回答日時:
Apacheのhttpd.confに下記3行を○の部分を書き換えて追加する
<Directory /home/○○○/public_html/○○○>
SSLRequireSSL
</Directory>
又は.htaccessが利用できるならば、SSL用のディレクトリに下記1行を書いた.htaccessをUPする
SSLRequireSSL
これでSSL以外ではエラーになり接続できない。
参考URL:http://blog.livedoor.jp/hanazu/archives/cat_1184 …
この回答への補足
.htaccessで設定してみましたが、SSL、通常、どちらでアクセスしてもInternal Server Errorとなってしまいました。(;;
補足日時:2005/05/30 19:19No.2
- 回答日時:
$_SERVER['SERVER_PORT']
が 80 か 443
ちなみに
while(list($key,$val) = each($_SERVER)){
echo $key.'---'.$val.'<BR>';
}
で変数確認してみればいいんじゃないでしょうか
この回答への補足
SSLで接続した時の$_SERVERの一覧です
SERVER
DOCUMENT_ROOT => /var/www/html
HTTP_ACCEPT => */*
HTTP_ACCEPT_ENCODING => gzip, deflate
HTTP_ACCEPT_LANGUAGE => ja
HTTP_CONNECTION => Keep-Alive
HTTP_HOST => **********.jp
HTTP_USER_AGENT => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
PATH => /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
REMOTE_ADDR => ***.***.**.**
REMOTE_PORT => 4012
SCRIPT_FILENAME => /var/www/html/*****/ini.php
SERVER_ADDR => ***.***.*.**
SERVER_ADMIN => ******@*******.jp
SERVER_NAME => www.*******.jp
SERVER_PORT => 80
SERVER_SIGNATURE =>
Apache/1.3.27 Server at www.********.jp Port 80
SERVER_SOFTWARE => Apache/1.3.27 (Unix) (Red-Hat/Linux) FrontPage/5.0.2.2626 PHP/4.3.0 mod_perl/1.27
GATEWAY_INTERFACE => CGI/1.1
SERVER_PROTOCOL => HTTP/1.1
REQUEST_METHOD => GET
QUERY_STRING =>
REQUEST_URI => /******/ini.php
SCRIPT_NAME => /******/ini.php
PATH_TRANSLATED => /var/www/html/******/ini.php
PHP_SELF => /*****/ini.php
argv => Array
argc => 0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 恒久的リダイレクトについて 2 2023/07/13 15:58
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- プロバイダー・ISP hpb22の接続方法の変更 1 2023/08/06 18:47
- その他(ブログ) アフィリエイトブログをレンタルサーバじゃなくてVPSでやるのだめなの? アフィリエイトブログを始める 1 2023/05/17 12:11
- その他(メールソフト・メールサービス) メール受信できません(アンドロイドスマホ) 2 2023/02/28 07:56
- PHP JSON_UNESCAPED_UNICODEをつけてもJSONの日本語がブラウザで表示されない 1 2022/11/16 07:22
- WordPress(ワードプレス) ワードプレスにて初期ドメインから新しいドメインに変更する際、SSL証明書の発行は必要でしょうか? 旧 1 2022/06/07 22:07
- オープンソース gmailでのimap設定 1 2022/09/15 13:25
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
勃起する時って痛いんですか? ...
-
ある範囲のセルから任意の値を...
-
検便についてです。 便は取れた...
-
2つの数値のうち、数値が小さい...
-
一番多く表示のある値(文字列...
-
精液の落とし方を教えてください
-
エクセル指定した範囲からラン...
-
エクセルのラベルの値(文字列...
-
EXCELで条件付き書式で空白セル...
-
値が入っているときだけ計算結...
-
MIN関数で空白セルを無視したい...
-
甲状腺が腫れているが血液検査...
-
エクセルで数式の答えを数値と...
-
テスターで断線を調べる方法教...
-
エクセルでθを求めたい。
-
小数点以下を繰り上げたものを...
-
中出しをするとお腹が痛い・・・。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
精子が黄色?
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
これって喉仏ですか? 私は女性...
-
中出しをするとお腹が痛い・・・。
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
尿検査前日に自慰行為した時の...
-
EXCELで式からグラフを描くには?
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
口の中に黒い血の塊
-
【Excelで「正弦波」のグラフを...
-
エクセル指定した範囲からラン...
おすすめ情報