Сколько стоит SSL для RESTful API? - PullRequest
       12

Сколько стоит SSL для RESTful API?

3 голосов
/ 30 декабря 2010

Я делаю RESTful API и мне интересно, насколько вычислительно дорого это для сервера, если каждый запрос выполняется с использованием SSL? Вероятно, это трудно измерить количественно, но было бы полезно сравнение с не-SSL-запросами (например, 1 SSL обходится дороже, чем 30-не-SSL-запрос)

Правильно ли я считаю, что для установления SSL-соединения обеим сторонам необходимо сгенерировать открытый и закрытый ключи, поделиться ими друг с другом и затем начать общение. Если при использовании RESTful API этот процесс происходит при каждом запросе? Или есть какое-то кэширование, которое повторно использует ключ для данного хоста в течение определенного периода времени (если так, как долго, прежде чем они истекут?).

И последний вопрос, который я спрашиваю, потому что я делаю приложение, которое использует Facebook Connect, и есть некоторые токены доступа, которые предоставляют доступ к чьей-то учетной записи Facebook, сказав, почему Facebook позволяет передавать эти токены доступа по незашифрованным соединениям? Конечно, они должны защищать токены доступа так же сильно, как комбинации имени пользователя / пароля, и, как таковые, обеспечивать SSL-соединение ... но они этого не делают.

РЕДАКТИРОВАТЬ: Facebook на самом деле обеспечивает HTTPS-соединение всякий раз, когда передается access_token.

Ответы [ 3 ]

1 голос
/ 30 декабря 2010

mtraut описал работу SSL, но не упомянул тот факт, что TLS поддерживает возобновление сеанса .Однако, несмотря на то, что возобновление сеанса поддерживается самим протоколом и многими соответствующими серверами, это не всегда поддерживается реализациями на стороне клиента.Таким образом, вы не должны полагаться на возобновление, и вам лучше поддерживать постоянную сессию, где это возможно.

С другой стороны, SSL-рукопожатие происходит довольно быстро (около десятка миллисекунд) в настоящее время, поэтому в большинстве случаев это не самое узкое место.

1 голос
/ 30 декабря 2010

http://www.imperialviolet.org/2010/06/25/overclocking-ssl.html

На наших производственных машинах [Google, ed.] На SSL / TLS приходится менее 1% загрузки ЦП, менее 10 КБ памяти на соединение и менее 2% накладных расходов сети. Многие считают, что SSL занимает много процессорного времени, и мы надеемся, что приведенные выше цифры (впервые опубликованные) помогут развеять это.

Если вы перестанете читать сейчас, вам нужно помнить только одно: SSL / TLS больше не требует вычислительных затрат.

1 голос
/ 30 декабря 2010

Процесс SSL выглядит примерно следующим образом:

  • Сервер (и, опционально, клиент) представляет свой (существующий, не сгенерированный) открытый ключ с использованием сертификата вместе с подписанным запросом.Противоположная сторона проверяет подпись (ее математическую действительность, путь к сертификату до центра сертификации, статус отзыва и т. Д.), Чтобы убедиться, что противоположная сторона является тем, кем она себя считает.

  • Между аутентифицированными сторонами согласовывается секретный сеансовый ключ (например, с использованием алгоритма Диффи-Хеллмана).

  • Стороны переходят на шифрованную связь

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

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