函式名稱:EventBufferEvent::sslFilter()
適用版本:libevent 2.1.0 或更高版本
函式描述:此方法用於在已建立的EventBufferEvent上安裝或解除安裝一個SSL/TLS過濾器。透過安裝過濾器,可以對傳入和傳出的資料進行SSL/TLS加密和解密操作。
用法:
bool EventBufferEvent::sslFilter(EventBase $base, EventSslContext $ctx, int $state [, int $options ] )
引數:
- $base:EventBase 物件,表示事件處理的事件迴圈基礎。
- $ctx:EventSslContext 物件,定義了SSL/TLS連線的引數和選項。
- $state:一個整數表示要安裝的SSL/TLS狀態。可以是以下常量值之一:
- EventBufferEvent::SSL_ACCEPTING:接受SSL/TLS連線。
- EventBufferEvent::SSL_CONNECTING:與遠端主機建立SSL/TLS連線。
- EventBufferEvent::SSL_OPEN:已建立的連線正在SSL/TLS模式下執行。
- EventBufferEvent::SSL_CLOSED:已建立的連線已關閉SSL/TLS模式。
- $options(可選):一個整數,指定連線的選項。可能的選項有:
- EventBufferEvent::SSL_REQUIRE_PEER_CERT:要求對等證書。
- EventBufferEvent::SSL_VERIFY_PEER:驗證對等證書。
返回值:成功安裝過濾器時返回 true,否則返回 false。
示例:
// 建立一個buffer事件
$base = new EventBase();
$bufferEvent = new EventBufferEvent($base, null, EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::SSL_CONNECTING, 'sslFilterCallback', null);
// 建立一個上下文
$ctx = new EventSslContext(EventSslContext::SSLv23_SERVER_METHOD, [
'local_cert' => '/path/to/certificate.pem',
'local_pk' => '/path/to/private_key.pem'
]);
// 安裝SSL過濾器,並連線到遠端主機
if ($bufferEvent->sslFilter($base, $ctx, EventBufferEvent::SSL_CONNECTING)) {
$bufferEvent->connect('remote-ssl-host.com', 443);
}
在上述示例中,我們首先建立了一個 EventBufferEvent 物件,並指定了一些選項(EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::SSL_CONNECTING)。然後,我們建立了一個 EventSslContext 物件,並配置了伺服器證書和私鑰的路徑。最後,我們呼叫 sslFilter() 方法,將 SSL 過濾器安裝到 EventBufferEvent 上,並透過 connect() 方法與遠端主機建立 SSL 連線。