Итак, я только что установил 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;
?>
Хорошо, поэтому я получаю доступмой 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!";
}
}
?>
Затем я создал приложение 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;
Вот результаты:
http://localhost/test.php - Ожидаемый результат
https://localhost/test.php - Ожидаемый результат (Itaknowlegdes Я использую HTTPS!)
http://jeffijoe.com/test.php - Ожидаемый результат
https://jeffijoe.com/test.php - Сбой! 404 Не найдено!
Мой jeffijoe.com размещается на обычной учетной записи общего хостинга.
Итак, вопросы: действительно ли HTTPS к Localhost действительно "безопасен"? И почему не удалось установить соединение HTTPS с местоположением Jeffijoe.com, если оно неmy Localhost? Как насчет сертификатов? Требуются ли они? Можно ли установить защищенное соединение, не приобретая сертификат с завышенной ценой?