7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP からのセキュア接続で POODLE 対応の影響を受けるケース/受けないケース

Last updated at Posted at 2014-10-24

内容は随時更新します。
突っ込みや、追加の情報あればコメント・編集リクエストいただけれれば幸いです。

このページでは、PHP プログラムから外部のサーバにセキュア接続するケースについてまとめていきます。
クライアントからの接続を待ち受けるケースについては、この記事には記載しません。

POODLE 対応においては、SSL v2, SSL v3 以下による接続を無効化することになるので、そういった対応を行った際に影響を受けるケース/受けないケースについてまとめます。

影響を受けるケース

fsockopen() で ssl://, sslv2://, sslv3:// を使ってホストを指定した場合

PHP: fsockopen - Manual

fsockopen() 関数では第一引数の $hostname に URL スキームを付加することで、トランスポート方式を選択できます。

トランスポート方式の指定については以下のマニュアルがあります。

PHP: Internet ドメイン: TCP、UDP、SSL、および TLS - Manual

ssl:// は SSL V2 での接続を試みます。 あるいはリモートホストの設定によっては SSL V3 での接続を試みます。 sslv2:// および sslv3:// は、SSL V2 と SSL V3 のどちらのプロトコルを 使用するかを明示的に指定します。

というわけで、少なくとも ssl://, sslv2://, sslv3:// を使用した場合は確実に影響を受けるようです。
(tls:// なら本当に影響を受けないのか、またシームレスに移行できるのか、については調査中)

ストリームラッパーで https を指定した場合

PHP: http:// - Manual

PHP はファイルシステム関数で https:// を指定することで https で URL にアクセスすることができます。

PHP 5.6 からは、ストリームラッパーのコンテキストオプションで SSL/TLS のバージョンを選択できます。

PHP: PHP 5.6.x における OpenSSL 関連の変更 - Manual

<?php
stream_context_set_default([
    'ssl' => [
        'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT,
    ],
]);

echo file_get_contents('https://www.google.com/');

以下のようにすると使用された SSL/TLS のバージョンが確認できます。

<?php
stream_context_set_default([
    'ssl' => [
        'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT,
        'capture_session_meta' => true,
    ],
]);

file_get_contents('https://www.google.com/');

$ctx = stream_context_get_default();
$meta = stream_context_get_options($ctx);
var_dump($meta['ssl']['session_meta']['protocol']);

デフォルトでより上位のバージョンが選択されるので、サーバが脆弱でなければ大丈夫です。


皆様からの情報をお待ちしてます。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?