2012-04-05 4 views
3

Как узнать сайт на SSL или нет на SSL? Я работаю над плагином WP для прямых транзакций, и важно, чтобы плагин проверял, что сайт (на котором установлен плагин) использует SSL или нет. & Мне нужно показать предупреждающее сообщение на странице проверки, если сайт не на SSL.Как найти сертификат SSL установлен на сервере? (С использованием PHP)

+0

Я думаю, что этот вопрос связан с http://stackoverflow.com/questions/4503135/php-get-site-url-protocol-http-vs-https –

+0

Это в основном то, как скрипт запрашивается по протоколу HTTPS, Если скрипт запрошен HTTPS, тогда $ _SERVER ['HTTPS'] установлен и равен 'on'. Но я пытаюсь понять, что SSL установлен на сервере, где находится сайт. Я нашел php-скрипт http://uniapple.net/blog/?p=539#comment-2705, и я протестировал, но не уверен, что он работает во всех аспектах? Спасибо –

ответ

0

Если это HTTPS-запрос, значение «HTTPS» в суперглобальном массиве $ _SERVER будет установлено и будет установлено на «on». Если это не запрос HTTPS, он не будет установлен.

Так, чтобы проверить если это запрос HTTPS в PHP вы можете сделать это:

if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { 
     ... 
    } 

В качестве альтернативы вы можете установить его в качестве постоянной, если вам нужно знать, если это запрос на HTTPS несколько раз в вашем коде как так:

define('IS_HTTPS_REQUEST', isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'); 
+0

@ Лекс. Это в основном то, как скрипт запрашивается через Протокол HTTPS. Если скрипт запрашивается HTTPS, тогда устанавливается $ _SERVER ['HTTPS'] и равен 'on'. Но я пытаюсь понять, что SSL установлен на сервере, где находится сайт.Я нашел php-скрипт http://uniapple.net/blog/?p=539#comment-2705, и я тестировал, но не уверен, что он работает во всех аспектах? Спасибо –

+0

Код, на который вы ссылаетесь, - это завиток, который может быть недоступен в общедоступном хостинге проверьте этот http://stackoverflow.com/questions/9852937/php-curl-proxy-not-work-with-godaddy-shared-hosting и код, который я дал вам, когда вы подключаете плагин и запускаете его отвечая на запросы, вы можете попросить wordpress указать ssl url и показать предупреждение о том, что ваш плагин не будет работать, если ssl не существует, и если запрос пришел без ssl (проверьте, используя вышеприведенный код), отобразите сообщение об ошибке –

1
function is_exist_ssl($domain){ 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://".$domain); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_HEADER, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_exec($ch); 

if(!curl_error($ch)){ 
$info = curl_getinfo($ch); 
if($info['http_code'] == 200){ 
return true; 
} 
return false; 
}else{ 
return false; 
} 
} 

использование:

$domain = 'uniapple.net'; 

if(is_exist_ssl($domain)){ 
echo "SSL is enabled!"; 
}else{ 
echo "No SSL"; 
} 

//usage :: 
if(!isset($_SERVER['REDIRECT_HTTPS']) || $_SERVER['REDIRECT_HTTPS'] != 'on'){ 
if(is_exist_ssl($domain)){ 
header('location : https://'.$domain); 
} 
} 
0

Существует ряд решений этой проблемы, описанных в this question. Если вы используете Apache Httpd и можете сузить путь до определенного префикса, вы можете использовать SSLRequireSSL в директиве Location. Кроме того, вы можете проверить $_SERVER['HTTPS'] на PHP, если он определен (это может зависеть от веб-сервера, но обычно это так).

Что еще более важно, не сосредотачивайтесь на проверке страницы, которую вы обслуживаете, через HTTPS. Клиент должен проверить это, потому что к моменту, когда он достигнет сервера, уже слишком поздно: он может быть уже перехвачен злоумышленником MITM (кто может даже сделать запрос по HTTPS, даже если подлинный клиент сделал не). Я подробно объяснил эту проблему в this answer. С точки зрения пользовательского интерфейса вы должны четко указать, что пользователь войдет в «безопасный» раздел, и все зависит от них, чтобы проверить, что последующие запросы будут превышать HTTPS.

Не обязательно плохо проверять, что ваш сервер действительно работает через HTTPS, но с точки зрения безопасности это не очень помогает. Что действительно важно, так это то, что все ссылки на этот безопасный раздел должны использовать https://не должны полагаться на автоматическое переписывание URL-адресов, чтобы сделать это).

1

Поскольку этот вопрос старый, и ответы немного устарели, я думал, что буду звонить!

Я видел, что вы спрашивали о плагине WordPress. WordPress имеет функцию is_ssl(), чтобы проверить, использует ли страница ssl с WordPress 2.6.

Смежные вопросы