Код не работает без отключения SSL

Пожалуйста, взгляните на этот код:

<?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 и импортировать сертификат с сервера