FX.phpで自己署名証明書を使用しているサーバとSSL通信する方法

別にFX.phpに限ってたことではないですが..。FX.phpではFileMaker Serverに接続する際、cURLを使用します。その際、自己署名証明書を使用しているサーバとSSL通信をおこなおうとするとエラーが発生し、うまく動作しません。

そこでFX.phpcURL通信をおこなっている箇所に、次のような修正をおこないます。

--- FX.php.orig  Thu May 22 18:17:40 2008
+++ FX.php  Fri May 23 11:37:45 2008
@@ -535,6 +535,8 @@
         } elseif ($this->isPostQuery) {
             if ($this->useCURL && defined("CURLOPT_TIMEVALUE")) {
                 $curlHandle = curl_init(str_replace($this->dataURLParams, '', $this->dataURL));
+                curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, FALSE);
+                curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, FALSE);
                 curl_setopt($curlHandle, CURLOPT_POST, 1);
                 curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $this->dataURLParams);
                 ob_start();
@@ -640,6 +642,8 @@
         } elseif ($this->isPostQuery) {
             if ($this->useCURL && defined("CURLOPT_TIMEVALUE")) {
                 $curlHandle = curl_init(str_replace($this->dataURLParams, '', $this->dataURL));
+                curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, FALSE);
+                curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, FALSE);
                 curl_setopt($curlHandle, CURLOPT_POST, 1);
                 curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $this->dataURLParams);
                 ob_start();

CURLOPT_SSL_VERIFYPEER、CURLOPT_SSL_VERIFYHOSTをFALSEに設定することで、サーバ証明書の検証をスキップさせています。(http://jp2.php.net/manual/ja/function.curl-setopt.php)

社内開発用の第四種オレオレ証明書なサーバで利用するだけなので、とりあえず修正箇所は以上です。FX.phpそのものに修正を加えるのがイヤであれば、別ファイルでFXを継承するクラスを作成して、その中でRetrieveFMData()とRetrieveFM7Data()をオーバーライドするコードを書けばOKだと思います。