AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

curl の SSL証明書関連エラー対策 (cURL error code 60)

AWS SDK for php 1の1.6.2と2.4.2を一緒に使ったときに遭遇。v1のオブジェクトでだけ該当エラーがでて、v2のオブジェクトではエラーが出ない状態でした。

  • 環境

PHP Fatal error:
Uncaught exception 'cURL_Exception' with message 'cURL resource: Resource id #175;
cURL error: SSL certificate problem:
unable to get local issuer certificate (cURL error code 60).
See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.' in C:\php53\pear\AWSSDKforPHP\lib\requestcore\requestcore.class.php:849

こんなコード書いてて、$s3v1->listBuckets() で、該当エラーがでる状態。v2の方は、全く問題なく動く。

<?php
$aws = Aws\Common\Aws::factory('./config_v1v2.php');

$s3v1 = $aws->get('v1.s3');
$s3v2 = $aws->get('s3');

$response = $s3v1->listBuckets();

$result = $s3v2->listBuckets();
?>

簡単に検索しても、同じエラーが出てるポストを発見できず。最終的に、後述のサイトを参考に、SDK v1の sdk.class.php の触り方があったので、コード上から次のようにプロパティを設定して回避(SSL通信は行うが、証明書の妥当性チェックを行わない)することにしました。

$s3v1->ssl_verification = false;


v2 での curl 関連設定がどうなってるのかは、未調査。一緒にCA証明書が配布されるようになったのかなぁ?それとも、pear で v1 をインストールしていれば、証明書関係の問題も解決されるようになってるのだろうか?

参考サイト