2011-07-09 54 views
2

所以我今天剛剛安裝XAMPP,我注意到的index.php了檢查,看它是否是通過HTTPS訪問。在此之前,我認爲爲了使用SSL安全性,您需要證書,但現在我懷疑了。Delphi應用程序的SSL證書 - 是否需要啓用安全性?

在這一點上(請你指正,這是這個問題的整點!),我自己的研究使我相信,只有證書提供有關您正在訪問位置信息。如果沒有找到證書,則由客戶確定他/她是否信任該連接。

的XAMPP索引頁包含此檢查:

<?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的「你信任這個網站嗎?」頁面出現了(問題是:我能相信自己嗎?))。

在那之後,我創建了自己的小test.php,用下面的代碼:

<?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!"; 
    } 

    } 

?> 

我然後創建一個連接到http://localhost/test.php Delphi應用程序,並https://localhost/test.php,藏漢作爲http://jeffijoe.com/test.phphttps://jeffijoe.com/test.phpTIdHTTP控制(併爲SSL,我迷上了TIdSSLIOHandlerSocketOpenSSLTIdHTTPIOHandler財產

下面是該代碼:

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真正的「安全」?那麼當HTTPS連接到Jeffijoe.com位置失敗時,如何在本地主機上執行此操作?如何證書?他們需要嗎?是否可以設置安全連接而不必購買高估的證書?

回答

8

的連接是由嗅探器的安全,即通過線路進行加密發生的事情。但是由於證書是自簽名的,所以不能保證對方真的是他們假裝的人,這就是證書的要點:第三方保證對方已經被證實是他們假裝的人。

它在您本地的XAMPP盒子上運行的原因是它攜帶了一個所謂的自簽名證書,以及用於管理https通信的服務器基礎架構,這兩者在您的託管站點上可能都比較缺乏。

最終它取決於你想達到的目標:如果通信必須從嗅探中安全,自簽名證書工作得很好。如果你需要證明你是誰,你需要一個專業公司頒發的證書。

編輯:使這個練習更有趣:證書系統可以同時工作,即服務器向你證明它是真實的,並且感謝所謂的客戶端證書,你可以向服務器證明你是誰你假裝是。根據您的使用案例,探索證書認證可能非常有用,但要警告這並不容易。

+0

簡單而重要! +1 – Jeff

+0

我的Delphi應用程序將連接到** my **主機或客戶端自己的主機,因此整個信任問題不成問題。我只需要確保連接,以防客戶端有一些他/她不知道的好奇眼睛軟件。我怎樣才能做到這一點? – Jeff

+0

@Jeff我想說的是,在您的用例中,您只需要一個自簽名證書,但也可以查看http://www.cacert.org/。 – fvu

相關問題