FX.phpで自己署名証明書を使用しているサーバとSSL通信する方法
別にFX.phpに限ってたことではないですが..。FX.phpではFileMaker Serverに接続する際、cURLを使用します。その際、自己署名証明書を使用しているサーバとSSL通信をおこなおうとするとエラーが発生し、うまく動作しません。
そこでFX.phpのcURL通信をおこなっている箇所に、次のような修正をおこないます。
--- 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だと思います。