Я пытаюсь найти механизм отправки запроса на целевой сервер и когда сокет должен считывать данные, передайте сокет другому процессу для извлечения данных. Я до сих пор использовал epoll в Linux, чтобы реализовать его до такой степени, что я выполняю рукопожатие, я отправляю запрос и запрос, затем передаю сокет fd другому процессу для дальнейшей обработки, я явно сохраняю сеанс SSL используя PEM_write_bio_SSL_SESSION
, а затем прочитайте его с помощью PEM_read_bio_SSL_SESSION
и добавьте его в контекст, но я не могу прочитать ssl-сокет в другом процессе, потому что я получаю либо внутреннюю ошибку, либо отказ от подтверждения.Передача подключенного SSL-соединения на другой процесс
Я читал это article, но до сих пор не смог найти никакого механизма для его устранения. Я знаю, что это потому, что openssl - это библиотека уровня приложения, но должен быть способ, потому что Apache уже делает это.
По крайней мере, если это невозможно, существует ли способ расшифровать данные из сокета (который я могу читать нормально) с помощью мастер-ключа из сеанса openssl?
Благодарим вас за ответ. Я надеюсь найти выход, чтобы не разветвлять этот процесс, потому что это очень дорого для того, что я делаю. Я понял суть, есть ли способ обмануть данные вручную с информацией, полученной из сеанса SSL? Я могу читать все зашифрованные данные из сокета. – purrogrammer
Насколько я знаю, ваш единственный вариант - разветвить процесс. Сериализуется текущее состояние SSL, поэтому вы можете его перенести. Обратите внимание, что сеанс SSL не является внутренним состоянием SSL. –
Вы правы, я просто повторно использовал сессию ssl, которая накладывает верх над рукопожатием, но это абсолютно не способ передать дескриптор сокета другому процессу. Я пробовал с posix-нитями, и он работает хорошо. Все еще пессимистично оценивает производительность и надеется получить более высокую производительность благодаря совместному планированию внутри pthreads. Мне интересно, как это делает Apache, я посмотрю на их реализацию. – purrogrammer