Контекст SSL (SSL_CTX) не является состоянием текущего сеанса TLS.Вместо этого это только общий набор настроек, которые можно использовать для нескольких сеансов TLS.Он еще не содержит никаких порядковых номеров или обмененных ключей.См. Что такое контекст SSL? .
То, что вы, вероятно, имеете в виду, это состояние самого сеанса SSL, который содержит набор шифров для использования, порядковые номера, ключи шифрования и т. Д. Этот сеанс не готовится заранее, но он является результатомрукопожатие TLS между клиентом и сервером.Поскольку он связан с базовым соединением, в котором было выполнено квитирование TLS (обычно это соединение TCP, но теоретически это может быть также любой поток данных).
Я не знаю ни одного метода, предлагаемого OpenSSL для сериализации и десериализации полного состояния запущенного сеанса SSL, т.е. всего, что необходимо для продолжения работы с существующим соединением TLS.Что можно сделать, это разветвить текущий процесс, и в этом случае у дочернего процесса будет точная копия состояния сеанса.Не состояния в дочернем и родительском не синхронизированы, то есть только одно из них должно взаимодействовать с сеансом SSL.
Что также можно сделать, это получить объект SSL_SESSION
.Это не описывает полностью состояние текущего сеанса SSL (т.е. нет порядковых номеров), но включает в себя такие вещи, как шифр и ключи шифрования.Этот объект может быть сериализован с использованием i2d_SSL_SESSION и может использоваться для возобновления того же сеанса в другом процессе - при условии, что сервер его поддерживает.Один и тот же SSL_SESSION
может использоваться одновременно несколькими подключениями.