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