【PHP8.x】stream_socket_enable_crypto関数の使い方

作成日: 更新日:

stream_socket_enable_crypto関数は、既に確立されたネットワークソケットストリームに対して、SSL/TLS暗号化を有効または無効にする操作を実行する関数です。この関数を使用することで、クライアントとサーバー間の通信経路を安全に保ち、第三者によるデータの盗聴や改ざんを防ぐことができます。

具体的には、stream_socket_clientstream_socket_serverなどで作成されたストリームリソースを最初の引数に指定し、2番目の引数enabletrueに設定することで暗号化を有効化します。反対にfalseを設定すると暗号化を無効化します。3番目の引数crypto_typeには、使用する暗号化プロトコルの種類を指定します。例えば、クライアントとして接続する場合はSTREAM_CRYPTO_METHOD_TLS_CLIENTを、サーバーとして接続を待つ場合はSTREAM_CRYPTO_METHOD_TLS_SERVERなど、適切な定数を指定する必要があります。これにより、セキュアなハンドシェイクが実行され、通信が暗号化されます。

この関数は、暗号化の有効化または無効化に成功した場合にtrueを返します。暗号化ハンドシェイクが失敗するなど、接続を確立できない場合は0を返します。関数自体の実行に失敗した場合はfalseを返します。安全なアプリケーションを開発するためには、この関数の戻り値を適切に確認し、エラーハンドリングを行うことが非常に重要です。

基本的な使い方

構文(syntax)

<?php
$stream = STDIN; // ストリームリソースの例
$enable = true;
$crypto_type = STREAM_CRYPTO_ENABLE;
$session_stream = null;

$result = stream_socket_enable_crypto($stream, $enable, $crypto_type, $session_stream);

引数(parameters)

resource $stream, bool $enable, int $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT, ?resource $session_stream = null

  • resource $stream: 暗号化または復号化を行うストリームリソース
  • bool $enable: 暗号化を有効にする場合は true、無効にする場合は false
  • int $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT: 使用する暗号化メソッド。デフォルトはクライアントTLS
  • ?resource $session_stream = null: 既存のSSL/TLSセッションを再利用する場合のセッションストリームリソース

戻り値(return)

bool

指定されたストリームソケットで暗号化を有効または無効にできたかどうかを示します。成功した場合は true を、失敗した場合は false を返します。

【PHP8.x】stream_socket_enable_crypto関数の使い方 | いっしー@Webエンジニア