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.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;
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连接失败了?证书怎么样?他们需要吗?是否可以设置安全连接而无需购买价格过高的证书?
这种连接对于嗅探器是安全的,即通过电线的连接是加密的.但由于证书是自签名的,因此无法保证对方确实是他们假装的人,这正是证书的要点:第三方保证对方已经被证实是他们假装的人.
它在您的本地XAMPP盒子上运行的原因是它带有一个所谓的自签名证书,以及用于管理https通信的服务器基础架构,这两者在托管站点上可能都缺乏.
最后,它取决于你想要实现的目标:如果通信必须是安全的嗅探,自签名证书就可以正常工作.如果你需要证明你是谁,你需要一个专业公司颁发的证书.
编辑:使这个练习更有趣:证书系统可以双向工作,即服务器向您证明它是真的,并且由于所谓的客户证书,您可以向服务器证明您是谁假装是谁.根据您的使用案例,探索cllient-side证书可能非常有用,但要注意它并不容易.
归档时间: |
|
查看次数: |
1023 次 |
最近记录: |