Что нужно для преобразования http-сервера в https-сервер? - PullRequest
4 голосов
/ 11 октября 2011

Этот вопрос похож на Начало использования OpenSSL но более конкретный и подробный, поэтому я думаю, что это справедливо спросить.

Предположим, у меня есть простой http-сервер, который делает следующее в успешном сценарии GET

  • создает сокет прослушивания
  • клиент подключается
  • читает данные через recv
  • анализирует запрос GET, теперь он знает, какой ресурс вернуть
  • пишет ответ через send
  • закрыть розетку

Этот сервер написан на C ++ под Linux.

Мой вопрос: что нужно для того, чтобы преобразовать этот сервер в минимальный https-сервер? (в частности, с использованием OpenSSL, но ответы в общем смысле приветствуются.)

Вот мое понимание (вопросительные знаки означают, что я понятия не имею)

  • инициализировать библиотеку
  • чтение сертификата сервера и личного ключа и других настроек
  • создать обычный сокет прослушивания (?)
  • клиент подключается
  • выполнить рукопожатие через библиотечную функцию (?)
  • рукопожатие сделано
  • нужен ли мне специальный шаг, прежде чем я начну получать и отправлять данные?
  • чтение данных через библиотечную функцию (?)
  • на данный момент данные выглядят в точности как HTTP GET?
  • если это так, проанализируйте GET и получите ресурс
  • записать возвращаемые данные через библиотечную функцию (?)
  • закрыть соединение через библиотечную функцию (?)

В целом, я надеюсь, что это требует только добавления некоторых дополнительных шагов к текущему коду и не влияет на синтаксический анализ HTTP. Это предположение верно?

Большое спасибо всем, кто мог заполнить пробелы.

1 Ответ

0 голосов
/ 17 октября 2011

Посмотрите "Сетевая безопасность с OpenSSL", как это покрывает. Даже если у вас нет книги, вы можете просмотреть код .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...