Этот вопрос похож на
Начало использования OpenSSL
но более конкретный и подробный, поэтому я думаю, что это справедливо спросить.
Предположим, у меня есть простой http-сервер, который делает следующее в успешном сценарии GET
- создает сокет прослушивания
- клиент подключается
- читает данные через recv
- анализирует запрос GET, теперь он знает, какой ресурс вернуть
- пишет ответ через send
- закрыть розетку
Этот сервер написан на C ++ под Linux.
Мой вопрос: что нужно для того, чтобы преобразовать этот сервер в минимальный https-сервер? (в частности, с использованием OpenSSL, но ответы в общем смысле приветствуются.)
Вот мое понимание (вопросительные знаки означают, что я понятия не имею)
- инициализировать библиотеку
- чтение сертификата сервера и личного ключа и других настроек
- создать обычный сокет прослушивания (?)
- клиент подключается
- выполнить рукопожатие через библиотечную функцию (?)
- рукопожатие сделано
- нужен ли мне специальный шаг, прежде чем я начну получать и отправлять данные?
- чтение данных через библиотечную функцию (?)
- на данный момент данные выглядят в точности как HTTP GET?
- если это так, проанализируйте GET и получите ресурс
- записать возвращаемые данные через библиотечную функцию (?)
- закрыть соединение через библиотечную функцию (?)
В целом, я надеюсь, что это требует только добавления некоторых дополнительных шагов к текущему коду и не влияет на синтаксический анализ HTTP. Это предположение верно?
Большое спасибо всем, кто мог заполнить пробелы.