今日はXAMPPをインストールしたばかりですが、index.phpにHTTPS経由でアクセスしたかどうかをチェックしていることに気付きました。その前に、私はSSLセキュリティを使うためには証明書が必要だと思っていましたが、私は今疑いがあります。DelphiアプリケーションのSSL証明書 - セキュリティを有効にする必要がありますか?
この時点で(この質問の要点である私を修正してください!)私自身の研究により、証明書はあなたがアクセスしている場所に関する情報しか提供していないと信じられました。 Certが見つからない場合は、クライアントが接続を信頼するかどうかを判断する必要があります。
<?php
if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
$uri = 'https://';
} else {
$uri = 'http://';
}
$uri .= $_SERVER['HTTP_HOST'];
header('Location: '.$uri.'/xampp/');
exit;
?>
さてさて、私はhttps://localhost
を通じて私のローカルホストにアクセスして、Firefoxは:
XAMPPのインデックスページには、このチェックが含まれている「あなたは、このウェブサイトを信頼しますか?」ページが表示されました(質問は「私は自分自身を信用できますか?」))。 TIdHTTP
コントロールでhttp://jeffijoe.com/test.php
とhttps://jeffijoe.com/test.php
としてaswell、私はその後、http://localhost/test.php
に接続するDelphiアプリケーションを作成し
<?php
echo "Hi. \n";
if(isset($_POST['firstname']) && isset($_POST['lastname']))
{
echo "Your Firstname is ".$_POST['firstname']." and your Lastname is ".$_POST['lastname'];
echo "\r\n\r\n";
if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
echo "You are using SSL, arentcha? :)";
} else {
echo "Hmm.. No SSL!";
}
}
?>
、およびhttps://localhost/test.php
へ:
はその後、私は次のコードで、私自身の小さなtest.php
を作成しました(およびSSLのために、私はTIdHTTP
のIOHandler
プロパティにTIdSSLIOHandlerSocketOpenSSL
をフックアップここ
は、そのためのコードです:。
ここVar
Src : TStringlist;
location: String;
begin
if RadioButton1.Checked then
location := 'localhost' else location := 'jeffijoe.com';
if RadioButton3.Checked then
Protocol := 'http' else Protocol := 'https';
Memo1.Clear;
Src := TStringlist.Create;
try
Src.Add('firstname=Jeff&lastname=Hansen');
Memo1.Text := IdHTTP1.Post(Protocol+'://'+location+'/test.php',Src);
finally
Src.Free;
end;
end;
結果は以下のとおりです。
ます。http://localhost/test.php - 予想される出力
ます。https://localhost/test.php - 予想される出力(それはaknowlegdes私は、HTTPSを使用しています)
http://jeffijoe.com/test.php! - 予想される出力を
https://jeffijoe.com/test.php - 失敗! 404お探しのページが見つかりませんでした!
私のjeffijoe.comは、通常の共有ホスティングアカウントでホストされています。
質問があります:HTTPSはLocalhostに本当に「安全」でしたか?そして、私のLocalhost上で動作しなかったJeffijoe.comの場所へのHTTPS接続はどうして失敗しましたか?証明書はどうですか?彼らは必要ですか?高価な証明書を購入することなく、セキュリティで保護された接続を設定することは可能ですか?
シンプルでポイントに! +1 – Jeff
My Delphiアプリケーションは** my ** hostまたはクライアント自身のホストに接続するため、信頼の問題全体に問題はありません。私は、クライアントが気づいていないソフトウェアがある場合に備えて、接続を保護する必要があります。それをどうすれば実現できますか? – Jeff
@Jeffあなたのユースケースでは、自己署名証明書がすべて必要ですが、http://www.cacert.org/もご覧ください。 – fvu