1

SSL https 接続を介してリクエストを送信し、レスポンスを受信する必要があります。要件の 1 つは、 http: //php.net/manual/en/ref.sockets.php にリストされている socket_write/socket_read、socket_send/socket_recv などの低レベルのソケット関数 ( NOT STREAM ) のみを使用することです。

4

1 に答える 1

0

stream_socket_enable_crypto()接続されたソケットでメソッドを使用できます。ソケットで ssl を有効にするには、環境とバージョンに応じて 4 つのオプションがあります。いずれかが機能しない場合を除き、それぞれを試すことができます。この例をイメージしてください:

function enableCrypto($socket)
{
    $modes = array(
        STREAM_CRYPTO_METHOD_TLS_CLIENT,
        STREAM_CRYPTO_METHOD_SSLv3_CLIENT,
        STREAM_CRYPTO_METHOD_SSLv23_CLIENT,
        STREAM_CRYPTO_METHOD_SSLv2_CLIENT
   );

   foreach ($modes as $mode) {
        if (stream_socket_enable_crypto($socket, true, $mode)) {
            return;
        }
   }

   throw new Exception('failed to enable crypto');
}

ところで、この例は PEAR リポジトリの HTTP_Request2 パッケージから取られています。上記の関数は、HTTP_Request2_SocketWrapper::enableCrypto() とほぼ同じです。HTTP_Request2 のソース コードを参照すると、さらに詳しい情報が得られる場合があります。

于 2013-01-12T13:21:27.053 に答える