2011-07-09 50 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

相关问题