ssl — получение дополнительной информации о неудачных запросах stream_socket_accept ()

У меня есть сервер связи PHP, работающий с использованием stream_socket_server () и stream_socket_accept (), довольно сложной вещи, которая использует SSL-соединения и сертификаты, чтобы быть уверенным, что удаленная сторона авторизована для подключения к серверу. Одна из вещей, которая появляется в моих журналах, это неудачные соединения. Я пытаюсь предоставить более подробную информацию об этих соединениях в целях безопасности.

В настоящее время я получаю большую часть сведений об ошибках при неудачных соединениях, устанавливая обработчик ошибок для вызова stream_socket_accept ():

public function on_ssa_error($errno, $errstr)
{
$this->ssa_error .= " ERROR [$errno]: $errstr\n";
}

public function on_select_read()
{
$this->ssa_error = "";
set_error_handler(array($this, "on_ssa_error"));
$rsocket = stream_socket_accept($this->ss, 0);
restore_error_handler();

if ($rsocket !== FALSE)
// Finish setting up the socket connection and start using it
else
// Report the error in $this->ssa_error
}

… Когда у меня сбой соединения, я склонен получать такие ошибки:

ERROR [2]: stream_socket_accept(): SSL operation failed with code 1. OpenSSL Error messages: error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate
ERROR [2]: stream_socket_accept(): Failed to enable crypto
ERROR [2]: stream_socket_accept(): accept failed: Success

… Что отчасти полезно, поскольку оно определяет причину плохого соединения как плохой сертификат, но мне бы очень хотелось, чтобы что-то указывало где пришел плохой запрос, в идеале IP-адрес или Mac-адрес источника.

Есть ли способ получить IP-адрес неисправного соединения, используя код stream_socket_xxx? Я знаю, что можно получить IP-адрес принятого соединения, но я в тупике, пытаясь найти способ получить его при неудачном соединении.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]