1

不匹配我試圖在我的AWS EC2機器上開發Twitter流應用程序。操作系統平臺是Ubuntu 16.04.1 LTS,我已將PHP版本降級到5.6.28-1 + deb.sury.org〜xenial + 1對等證書CN =`stream.twitter.com'與期望CN =`199.16.156.217'

當我在此服務器上運行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和另一種是GoDaddy的服務器)。

當前EC2計算機中的所有端口現在都打開,SSL版本是OpenSSL/1.0.2gopenssl部分具有以下值。

openssl section - phpinfo

有人可以幫助我找到其確切的問題是什麼?

+0

*「相同的代碼在另外兩臺機器上運行時沒有任何問題......」*什麼代碼?你還沒有發佈任何內容。 – jww

+0

遠射...... IP是否正確? –

回答

1

該問題已經解決了第一個錯誤的線索。 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的值默認爲true。系統將首先從同行獲取證書並與我們匹配。在我的應用程序中,我使用IP連接,獲取的證書中的URL爲stream.twitter.com。這是問題。

fsockopen中的IP更改爲stream.twitter.com解決了我的問題。

5.6之前的PHP版本,默認值VERIFY_PEER是錯誤的,這就是爲什麼我的其他實例上運行相同的代碼。

+0

是的,它被稱爲SNI(服務器名稱指示) - 您的客戶端必須驗證它收到的證書是否發佈到所請求的主機名。否則,您不知道證書是否因惡意原因未被替換;也因爲一臺服務器可以有多個主機名,每個主機名都有不同的證書。 – Narf

相關問題