share facebook facebook twitter menu hatena pocket slack

2011.12.01 THU

AWS SDK for PHPのS3関係のメソッドで証明書関係のエラー対策

鈴木 宏康

WRITTEN BY 鈴木 宏康

前に、AWS SDK for PHPでS3にファイルアップロードしようとしたら証明書関係のエラーの記事で紹介はしたのですが、メソッドによっては対策方法である下記のオプションが指定できないものもあるので、このようなメソッドを利用する場合の対策方法を紹介します。

“curlopts” => array(CURLOPT_SSL_VERIFYPEER => false)

はじめに、下記のようなスクリプトを実行します。

require_once("/opt/aws/php/latest/sdk.class.php");
$s3 = new AmazonS3(
    "AAAAAAAAAAAAAAAAAAAA",
    "ssssssssssssssssssssssssssssssssssssssss"
);
$response = $s3->get_bucket_filesize("cdn.cloudpack.jp", true);
print($response);

そうすると、次のようなエラーになりました。
(cdn.cloudpack.jp.s3.amazonaws.comは*.s3.amazonaws.comの証明書でもエラー)

PHP Fatal error:  Uncaught exception 'RequestCore_Exception' with message 'cURL resource: Resource id #9; cURL error: SSL: certificate subject name '*.s3.amazonaws.com' does not match target host name 'cdn.cloudpack.jp.s3.amazonaws.com' (51)' in /opt/aws/php/1.4.7/lib/requestcore/requestcore.class.php:824
Stack trace:
#0 /opt/aws/php/1.4.7/services/s3.class.php(728): RequestCore->send_request()
#1 /opt/aws/php/1.4.7/services/s3.class.php(1397): AmazonS3->authenticate('cdn.cloudpack.j...', Array)
#2 /opt/aws/php/1.4.7/services/s3.class.php(1950): AmazonS3->list_objects('cdn.cloudpack.j...')
#3 /opt/suzuki/bin/get-bucket-filesize(9): AmazonS3->get_bucket_filesize('cdn.cloudpack.j...', true)
#4 {main}
  thrown in /opt/aws/php/1.4.7/lib/requestcore/requestcore.class.php on line 824

対策用のオプションが使えないメソッドは、SSLの通信をしないようにして対策することができます。

SSLの通信をしない方法は、次のように「$s3->use_ssl = false;」で実現可能です。

require_once("/opt/aws/php/latest/sdk.class.php");
$s3 = new AmazonS3(
    "AAAAAAAAAAAAAAAAAAAA",
    "ssssssssssssssssssssssssssssssssssssssss"
);
$s3->use_ssl = false;
$response = $s3->get_bucket_filesize("cdn.cloudpack.jp", true);
print($response);

HTTPSの通信にはなりませんが、これで対策はできます。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。