Delphi应用程序的SSL证书 - 是否需要启用安全性?

时间:2011-07-09 12:05:45

标签: php delphi ssl https ssl-certificate

所以我今天刚刚安装了XAMPP,我注意到index.php检查了它是否是通过HTTPS访问的。在此之前,我认为为了使用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访问我的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!";
    }

  }

?>

然后我创建了一个Delphi应用程序,它连接到http://localhost/test.phphttps://localhost/test.php,以及http://jeffijoe.com/test.phphttps://jeffijoe.com/test.php TIdHTTP控件(和SSL,我将TIdSSLIOHandlerSocketOpenSSL连接到TIdHTTP的{​​{1}}媒体资源。

以下是代码:

IOHandler

结果如下:

http://localhost/test.php - 预期输出

https://localhost/test.php - 预期输出(我知道我使用的是HTTPS!)

http://jeffijoe.com/test.php - 预期输出

https://jeffijoe.com/test.php - 失败! 404 Not Found!

我的jeffijoe.com托管在常规共享主机帐户上。

所以 - 问题是:到本地主机的HTTPS是否真的“安全”?为什么在我的Localhost上没有连接到Jeffijoe.com位置的HTTPS连接失败了?证书怎么样?他们需要吗?是否可以设置安全连接而无需购买价格过高的证书?

1 个答案:

答案 0 :(得分:8)

连接对嗅探器是安全的,即通过线路的连接是加密的。但由于证书是自签名的,因此无法保证对方确实是他们假装的人,这正是证书的要点:第三方保证对方已经被证实是他们假装的人

它在您的本地XAMPP盒子上工作的原因是它带有一个所谓的自签名证书,以及用于管理https通信的服务器基础架构,这两者在您的托管站点上可能都缺乏。

最后,它取决于你想要实现的目标:如果通信必须安全,不能嗅探,自签名证书就可以正常工作。如果你需要证明你是谁,你需要一个专业公司颁发的证书。

编辑:使这个练习更有趣:证书系统可以双向工作,即服务器向您证明它是真的,并且由于所谓的客户证书,您可以向服务器证明您就是谁假装是。根据您的使用案例,探索cllient-side证书可能非常有用,但请注意它并不容易。