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

Jef*_*eff 2 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;
?>
Run Code Online (Sandbox Code Playgroud)

好吧,所以我访问了我的Localhost 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!";
    }

  }

?>
Run Code Online (Sandbox Code Playgroud)

然后,我创建一个连接到一个Delphi应用程序http://localhost/test.php,并且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;
Run Code Online (Sandbox Code Playgroud)

结果如下:

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

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

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

https://jeffijoe.com/test.php - 失败!404找不到!

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

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

fvu*_*fvu 8

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

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

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

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

  • 自签名证书不能防止中间人攻击,因为任何人都可以生成具有完全相同数据的证书.您需要一个双方信任的CA链 - 如果另一方同意,它可能是您自己的. (3认同)