2011-07-09 9 views
2

今日は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.phphttps://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のために、私はTIdHTTPIOHandlerプロパティに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接続はどうして失敗しましたか?証明書はどうですか?彼らは必要ですか?高価な証明書を購入することなく、セキュリティで保護された接続を設定することは可能ですか?

答えて

8

スニッファからの接続は安全です。つまり、電線を通過するものは暗号化されています。しかし、証明書が自己署名されているので、相手側が本当に自分が誰なのかは保証されません。それは証明書のポイントです。第三者は、相手側が自分が誰かであると証明されていることを保証します。

ローカルのXAMPPボックスで動作するのは、いわゆる自己署名証明書と、https通信を管理するサーバーインフラストラクチャで、どちらもホストされているサイトにはないと思われるからです。

最終的には、達成したいことに依存します。通信がスニッフィングから安全でなければならない場合、自己署名証明書は正常に機能します。あなたが誰なのかを証明する必要がある場合は、専門会社が発行した証明書が必要です。

EDIT:証明書システムは、両方の方法で動作することができます。すなわち、サーバーは本物であることを証明します。いわゆるクライアント証明書により、あなたは誰であるかを証明することができますあなたはふりをする。あなたのユースケースに応じて、クライアント側の証明書を調べることは非常に便利ですが、簡単ではないことを警告してください。

+0

シンプルでポイントに! +1 – Jeff

+0

My Delphiアプリケーションは** my ** hostまたはクライアント自身のホストに接続するため、信頼の問題全体に問題はありません。私は、クライアントが気づいていないソフトウェアがある場合に備えて、接続を保護する必要があります。それをどうすれば実現できますか? – Jeff

+0

@Jeffあなたのユースケースでは、自己署名証明書がすべて必要ですが、http://www.cacert.org/もご覧ください。 – fvu

関連する問題