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

Php Delphi应用程序的SSL证书-是否需要启用安全性?,php,delphi,ssl,https,ssl-certificate,Php,Delphi,Ssl,Https,Ssl Certificate,所以我今天刚刚安装了XAMPP,我注意到index.php检查了它是否通过HTTPS访问。在此之前,我认为为了使用SSL安全性,您需要一个证书,但我现在有点怀疑 在这一点上(请纠正我,这就是这个问题的重点!),我自己的研究让我相信证书只提供了有关您访问的位置的信息。如果未找到证书,则由客户端确定他/她是否信任该连接 XAMPP索引页包含以下检查: <?php if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HT

所以我今天刚刚安装了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;
?>
然后我创建了一个连接到
http://localhost/test.php
,并发送至
https://localhost/test.php
,以及
http://jeffijoe.com/test.php
https://jeffijoe.com/test.php
使用
TIdHTTP
控件(对于SSL,我将一个
TIdSSLIOHandlerSocketOpenSSL
连接到
TIdHTTP
IOHandler
属性

以下是代码:

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-预期输出(我正在使用HTTPS!)

http://jeffijoe.com/test.php-预期产量

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

My jeffijoe.com由一个定期共享的托管帐户托管


因此,问题是:本地主机的HTTPS真的“安全”吗?为什么到Jeffijoe.com位置的HTTPS连接失败,而不是在我的本地主机上?证书呢?它们是必需的吗?是否可以在不购买高价证书的情况下建立安全连接?

连接是安全的,不会受到嗅探器的攻击,即通过电线传输的内容是加密的。但是证书是自签名的,不能保证另一方真的是他们假装的那个人,这正是证书的要点:第三方保证另一方已经被验证为他们假装的那个人

它在本地XAMPP盒上工作的原因是它带有一个所谓的自签名证书,以及管理https通信的服务器基础设施,这两个功能在托管站点上可能非常缺乏

最后,这取决于你想要实现什么:如果通信必须是安全的,不被嗅探,那么自签名证书就可以正常工作。如果你需要证明你是你伪装的人,你需要一个专业公司颁发的证书


编辑:为了使这个练习更有趣:cert系统可以双向工作,即服务器向您证明它是真实的,并且由于所谓的客户端证书,您可以向服务器证明您是您所伪装的人。根据您的用例,探索客户端证书可能非常有用,但请注意,这并不容易y、

我的Delphi应用程序将连接到我的主机或客户端自己的主机,因此整个信任问题都不是问题。我只需要确保连接安全,以防客户端有一些他/她不知道的好奇之眼软件。我如何实现这一点呢?@Jeff我想说,在您的用例中,您只需要一个自签名证书,但go看看。问题是,我的应用程序将是一个消费产品,客户必须在自己的托管帐户上安装我的PHP脚本。他们不知道如何生成SSL证书,他们甚至不知道那是什么。:p我产品的客户端Win32部分连接到客户服务器上的PHP脚本。除非客户r是skizzo,不需要全部验证工作。我只需要一个安全的连接,以便客户知道该连接始终是安全的。:)自签名证书不能防止中间人攻击,因为任何人都可以使用完全相同的数据生成证书。您需要双方都信任的CA链-如果另一方同意,它可能是您自己的。
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;