EvernoteSDK(PHP)の「Error obtaining temporary credentials: making the request failed (SSL connect error)」エラーが、どうしても解決しない場合に一番最後に確認したいこと

Evernote アプリケーション別

広報:齊藤 メイ 広報:齊藤 メイ

Posted on 2013年08月05日(月)08:14


EvernoteSDK(PHP)の「Error obtaining temporary credentials: making the request failed (SSL connect error)」エラーが、どうしても解決しない場合に一番最後に確認したいこと

EvernoteAPIを利用するアプリケーションはEvernoteサーバーと通信しますが、接続エラーが発生する事があります。本日は「EvernoteSDK(PHP)の「Error obtaining temporary credentials: making the request failed (SSL connect error)」エラーが、どうしても解決しない場合に一番最後に確認したいこと」についてです。  

こんにちは。猫ITソリューションズ広報の齊藤メイ(♀)です。 本日は、「EvernoteSDK(PHP)の「Error obtaining temporary credentials: making the request failed (SSL connect error)」エラーが、どうしても解決しない場合に一番最後に確認したいこと」についてです。

この記事に書くエラー原因は、可能性としてはありえます。しかし、今現在このエラー「原因は」、おそらくありえないと思います。そういうこともあり「一番最後に」とタイトルにつけさせていただきました。備忘録的に綴るにすぎませんのでご了承ください。
 

エラー概要

エラー内容は、「EvernoteサーバーへのOAuthによるSSL接続エラー」です。対象は、以下環境で稼働させているEvernoteアプリケーション(PHP)です。

  • サーバーOS:CentOS 5.6以上
  • openssl:0.9.8f以上
  • EvernoteSDK(PHP) :1.22以下


このような「接続エラー」の原因は、大抵Webアプリケーションの作りの問題ですが、ごくまれにEvernoteサーバーの不具合(=メンテナンス中など)という場合もあります。ですので、まずは


を確認をしてから本記事を参照してください。
 

エラー対処方法

Webサーバーのopensslのバージョンを0.9.8eに下げる事で、エラーが解消されます。

あくまで上記環境のようにEvernoteSDKのバージョンが古い、または後述のようにアプリケーションによるSSLプロトコルバージョン差異の吸収が出来ない場合の対処です。

そしてしつこいようですが、今から新たにEvernoteSDK(PHP)を使いWebアプリケーションを作ろうという方が、こんなエラーに遭遇するとは思えません。
 

エラー原因

エラーは、EvernoteSDK(PHP)と、Webアプリケーションが稼働するサーバーと、Evernoteサーバーの、それぞれで利用するSSLプロトコルバージョンが異なった場合に発生すると思われます。

先に書いておきますが、
Webアプリケーション側でOAuth::disableSSLChecksを使うことにより、SSLプロトコルバージョン違いに関係なく稼働させることが「本来は」可能です。これで問題ないはずなのです。
PHP OAuth SSL problem - Evernote for Developers - Evernote User Forum

ですが、どうやっても上記が効かない・出来ない場合には、根本的な「SSLプロトコルバージョンを揃える」という対策を取るしかなくなる訳です。

以下は、EvernoteサーバーのSSLプロトコルバージョンを確認した結果です。


EvernoteサーバーはTLS1.1/1.2には未対応、ということがわかります。
 
次は、昨今のサーバーに標準でインストールされているであろう、openssl1.0.x系についての概説を見てみましょう。

Upgrade to OpenSSL 1.0.1 in CentOS | Axivo Community
> Major changes found in OpenSSL 1.0.1:
> ・TLS/DTLS heartbeat support
> ・SCTP and SRP support
> ・RFC 5705 TLS key material exporter
> ・RFC 5764 DTLS-SRTP negotiation
> ・Next Protocol Negotiation
> ・Support for TLS v1.1 and TLS v1.2
> ・Support for password based recipient info for CMS
> ・PSS signatures

> OpenSSL v1.0.x now support TLS v1.1/1.2 and WINE also support it automaticaly.


openssl1.0.x系は、TLS1.1/1.2をサポートしていることがわかります。

つまり「アプリケーションによるバージョン違い制御を行わずに」EvernoteサーバーへOauthによるSSL接続を行うには、
 
  • TLS1.0/SSL3.0接続をサポートしたopenssl1.x.x系
  • TLS1.0をサポートしたOpenSSL 0.9.8e

を使うしかないという事になります。


補足

しかし、上記の結論を施策として行うべきではありません。
セキュリティを無視することになるからです。

TLS1.1/1.2と後続バージョンが出ている以上、TLS1.0は安全ではありません。本来は最新のopensslを使うべきなのです。
Transport Layer Security - Wikipedia
Provide OpenSSL 1.0.1c or Higher as cPanel RPM, to allow TLS 1.1, TLS 1.2 | cPanel Feature Requests

当然そうなると、上記で書いた「TLS1.0/SSL3.0接続をサポートしたopenssl1.x.x系」が今後リリースされることはないだろう、と予想できます。

しかし、Webアプリケーション側が最新のopensslを使おうとも、EvernoteサーバーがTLS1.1/1.2に未対応という事実があります。既にこの件はEvernoteForum上で要望として?挙がっており、Evernote中の人も認識していましたので、今しばらく待ってみましょう。



・・・要望から結構時間が経っていますね、、、


 

いかがでしたでしょうか?
猫ITソリューションズは、飼い主の皆さんにITを活用しあらゆるシーンで的確なアドバイスをいたします。それではまたお会いしましょう。

EvernoteSDK(PHP)の「Error obtaining temporary credentials: making the request failed (SSL connect error)」エラーが、どうしても解決しない場合に一番最後に確認したいこと

see you!

 



Blog Categories

Member Profile

広報:齊藤 メイ

埼玉在住の三毛猫です。趣味は日向ぼっこ、好きな猫缶はカツオ系です。仲良くしてくださいね!

Facebook
Twitter

代表:齊藤 智宏

埼玉在住のWebデベロッパーです。80's洋楽、映画、レトロゲームが大好きです。よろしく!

Facebook
Twitter