ここのところOAuth関連でハマってしまっています。
まず、最初に登場したエラーはこれです。
[Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
このエラーは、certifiをインストールして証明書をごにょごにょすれば良さげ。
まずはいつものようにpip installします。
pip install certifi
そして、OAuthの自分のソースコードに以下のコードを追加。
import certifi client = oauth.Client(consumer) client.ca_certs = certifi.where()
ちなみにcertifi.where()は認証局の証明書のファイルを返します。
C:\>python >>> import certifi >>> certifi.where() 'C:\\Python27x86\\lib\\site-packages\\certifi\\cacert.pem' >>>
自分が書いたOAuthのソースコードを実行すると、エラーの内容が変わりました。
[Errno 1] _ssl.c:1354: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
おそらくですが、OpenSSLが古いからかも…。MACでは問題なかったし。
そろそろPython 2.7.9(現在、2.7.2)にアップデートする必要がありそうです。
OpenSSL のバージョンを確認。
C:\>python Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import ssl >>> print ssl.OPENSSL_VERSION OpenSSL 0.9.8l 5 Nov 2009 >>>
当然古いです。
そこで思い切って、Python 2.7.9にアップデート。
C:\>python Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import ssl >>> ssl.OPENSSL_VERSION 'OpenSSL 1.0.1j 15 Oct 2014'
OpenSSLのバージョンも新しくなっています。
そして冒頭のエラーが出ていたプログラムを実行すると・・・・
見事にエラーが出なくなりました。
恐らくですが、接続しようとしていたウェブサイトがSSL3.0を切っていたのでしょう。脆弱性の問題もあったし。
以上でめでたく解決です。