Пожалуйста, взгляните на этот код:
<?php $url = "the_source_url"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result = curl_exec($ch); print_r($result); ?>
Эта страница доступна моему Android-приложению, чтобы получить дату из какого-то источника. url
возвращает данные json, которые я распечатываю, а затем в моем приложении обрабатываю данные и отображаю их. Это работает отлично для меня прямо сейчас (я все еще на стадии тестирования).
Я прочитал в SO, что отключение SSL
(которое я делал в строке 6) является рискованным и не рекомендуется . Однако я не мог заставить свой скрипт работать, если не отключу его.
Как заставить его работать без отключения SSL? Или как устранить риск?
Отключение сертификата сделает вас уязвимым для человека в средней атаке, вы можете скачать его с помощью сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt ($ch, CURLOPT_CAINFO, "PATH_TO_CERTIFICATE/cert.pem");
Чтобы получить сертификат, следуйте этому руководству
Затем нажмите «Просмотреть сертификат»:
Поднимите вкладку «Подробности» на странице cerficates и выберите сертификат в верхней части иерархии. Это сертификат CA.
Затем нажмите «Экспорт» и сохраните сертификат ЦС в выбранное вами место, убедившись, что в качестве типа / формата сохранения выберите сертификат X.509 (PEM).
Источник изображения: http://unitstep.net/
Вам нужно добавить параметр CURLOPT_SSL_VERIFYHOST
и установить для него значение false
:
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
Это отключает верификацию хоста SSL, чтобы вы могли получить доступ к хосту, который использует самозаверяющий сертификат. Если хост имеет действительный сертификат, то проверьте ответ @ Baba
Вопросы безопасности:
Соединение зашифровано и не может быть легко обнюхивано. Но вы не можете убедиться, что сервер является сервером. Таким образом, хакер мог обнюхать движение, используя человека в средней атаке. Если вы хотите убедиться, что вам придется идти по пути @Babas и импортировать сертификат с сервера