所以我今天刚刚安装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.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 - 预期输出(它aknowlegdes我使用HTTPS)
http://jeffijoe.com/test.php - 预期输出
https://jeffijoe.com/test.php - 失败! 404没有找到!
我jeffijoe.com托管在常规共享托管帐户。
所以 - 问题是:是HTTPS为localhost真正的“安全”?那么当HTTPS连接到Jeffijoe.com位置失败时,如何在本地主机上执行此操作?如何证书?他们需要吗?是否可以设置安全连接而不必购买高估的证书?
简单而重要! +1 – Jeff
我的Delphi应用程序将连接到** my **主机或客户端自己的主机,因此整个信任问题不成问题。我只需要确保连接,以防客户端有一些他/她不知道的好奇眼睛软件。我怎样才能做到这一点? – Jeff
@Jeff我想说的是,在您的用例中,您只需要一个自签名证书,但也可以查看http://www.cacert.org/。 – fvu