2012年9月21日 星期五

Ubuntu 12.04 Python調用SSL的錯誤訊息

這兩天在使用Python介接某個使用OAuth2的網站驗證時,在本地端的機器測試一切都正常,但在遠端的Server上確出現了下面的問題:
<urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol>

透過Google大神找到了這邊,這個問題是Ubuntu 12.04的known issue,主要是利用TLS1驗證的SSL網站似乎會判斷錯誤,沒有辦法正確的連線。該篇文章同時也提到了可以修改Python的httplib去強制加上TLSv1去讓連線正常,不過這似乎不是個好的方式。在Ubuntu的bug track system中,該條被回報的bug似乎也已經被Fix Released。所以在我本地端做為開發用的電腦上一切正常。

原本只以為要更新openssl套件就可以,沒想到只更新這個套件是沒有效的,後來發現要連libssl1.0.0套件一起更新。重開Web Server後就正常了。

參看:
  1. Python HTTPS requests (urllib2) to some sites fail on Ubuntu 12.04 without proxy
  2. HTTPS requests fail on sites which immediately close the connection if TLS 1.1 negotiation is attempted, on Ubuntu 12.04 

沒有留言:

張貼留言