0

PHP+curlからSSLを制御していないバグのあるWebサーバーと通信しようとしています。

私はopenssllibに対して直接小さなCプログラムを作成し、SSL_CTX_set_options()の呼び出しでopensslオプションSSL_OP_NO_COMPRESSIONとSSL_OP_DONT_INSERT_EMPTY_FRAGMENTSを明示的に有効にすると、それを機能させることができることを確認しました。このような:

SSL_CTX_set_options(ctx,  SSL_OP_NO_COMPRESSION | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS)

しかし...それは私の孤立したCプログラムにあります。

どういうわけか、SSL接続を確立するときにPHP + curlにこれらのオプションを設定させることはできますか?CURLははるかに高いレベルで動作しているようです。

これまでのところ、私自身の調査結果は次のとおりです。

  • については知ってcurl_setoptいますが、リストにあるようなオプションはありません。

  • ストリームオプションと呼ばれるものを見つけましたが、それらがCURLでどのように使用されているか、または使用されているかどうかがわかりません。また、必要なオプションに一致するものがありません。

  • opensslに関するPHPマニュアルは、キーと証明書を処理する関数に関するものにすぎないようです。

  • 次に、HttpRequest setSslOptionsがありますが、これもオプションをCURLコンテキストに厳密に一致させているようです。


アップデート

圧縮を無効にするオプションに関する「user2076645」からの応答の後、私はPHPのソースのクローンを作成し、自分自身を調べました。

具体的には、次のコードを見つけました。

#if OPENSSL_VERSION_NUMBER >= 0x0090605fL
    ssl_ctx_options &= ~SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS;
#endif

これにより、必要なオプションが明示的に無効になります。コミットメッセージも調べましたが、SSLへの攻撃の可能性に対する修正でした。

ですから、現在、PHPからは実行できないと思います:-(

4

1 に答える 1

0

役立つかどうかはわかりませんが、圧縮を無効にするオプションがあります

http://git.php.net/?p=php-src.git;a=commitdiff;h=4a01ddfb5569da1b87dd4cac95c3f709fb607396;hp=bb4d11b405ae1f37a8b0e4db630e80c5678f0746

于 2013-02-15T19:21:43.177 に答える