Я пытался разработать потоковое приложение для Twitter на своем компьютере AWS EC2. Платформа ОС — Ubuntu 16.04.1 LTS, и я снизил версию PHP до 5.6.28-1 + deb.sury.org ~ xenial + 1
Когда я запускаю потоковое приложение Twitter на этом сервере, я получаю следующие ошибки.
Warning: fsockopen(): Peer certificate CN=`stream.twitter.com' did not match expected CN=`199.16.156.217' in /var/www/html/myapp/streamer/twitterstreamer.php on line 620
Warning: fsockopen(): Failed to enable crypto in /var/www/html/myapp/streamer/twitterstreamer.php on line 620
Warning: fsockopen(): unable to connect to ssl://199.16.156.217:443 (Unknown error) in /var/www/html/myapp/streamer/twitterstreamer.php on line 620
Тот же код работает без каких-либо проблем на двух других машинах (один — AWS EC2, а другой — годовой сервер).
Все порты в текущей машине EC2 открыты, и SSL
версия OpenSSL/1.0.2g
openssl
раздел имеет следующее значение.
Может ли кто-нибудь помочь мне найти точную проблему?
Проблема решена с подсказкой первой ошибки.
Warning: fsockopen(): Peer certificate CN='stream.twitter.com' did not match expected CN='199.16.156.217' in /var/www/html/myapp/streamer/twitterstreamer.php on line 620
В PHP 5.6.x значение openssl VERIFY_PEER
по умолчанию верно Система сначала получит сертификат от партнера и совпадет с нашим. В моем приложении я подключался с IP-адресом, а URL-адрес в выбранном сертификате stream.twitter.com
, Это была проблема.
Смена IP в fsockopen
в stream.twitter.com
решил мою проблему.
Версии PHP до 5.6, значение по умолчанию VERIFY_PEER
ложно, и именно поэтому тот же код работает на других моих экземплярах.
Других решений пока нет …