Как на самом деле работает SSL? - PullRequest
4 голосов
/ 15 декабря 2009

Всякий раз, когда я вижу, что об этом говорят, это звучит так, будто кто-то просто «включает» SSL, и тогда все запросы / ответы к / с онлайн-сервера магически защищены.

Это правильно? Является ли SSL просто кодом - я могу написать два приложения и заставить их общаться через SSL, или вам нужно как-то зарегистрировать / сертифицировать их внешне?

Ответы [ 10 ]

9 голосов
/ 15 декабря 2009

Защищенные веб-страницы запрашиваются через порт 443 вместо обычного порта 80. Протокол SSL (довольно сложный сам по себе) отвечает за безопасность связи и использует информацию сертификата на СЕРВЕРЕ и БРАУЗЕРЕ для аутентификации Сервер как то, кто они говорят, что они.

Создать сертификат SSL легко. Создание одного из них, основанного на информации, встроенной в 99% веб-браузеров, стоит денег. Но технические аспекты не отличаются.

Видите ли, есть организации (Verisign, Globalsign и т. Д.), Которые уже много лет содержат информацию о своих центрах сертификации в браузерах. Таким образом, когда вы посещаете сайт с сертификатом, который они создали (подписали), ваш браузер говорит:

"хорошо, если Verisign доверяет XYZ.com, и я доверяю Verisign, то я доверяю XYZ.com"

Процесс прост:

Перейти к компетентному поставщику SSL, такому как GlobalSign. Создайте ключ и запрос сертификата на веб-сервере. Используйте их (и свою кредитную карту), чтобы купить сертификат. Установите его на сервер. Направьте веб-браузер на HTTPS (порт 443). Остальное сделано для вас.

2 голосов
/ 15 декабря 2009

SSL - это протокол для зашифрованной связи по TCP-соединению (или другой надежной схеме). Шифрование использует шифрование с открытым ключом с использованием сертификатов X.509. SSL поддерживает как конфиденциальность, так и доверие. Они связаны: если вы не доверяете серверу, вы не верите, что сервер не передал свой закрытый ключ всем в Северной Америке.

Таким образом, клиент должен доверять сертификату сервера. Для общедоступных сайтов это организовано через иерархию центров сертификации, причем корневым органам доверяют автоматически браузеры и такие вещи, как реализация сокетов JRE.

Любой может создать самозаверяющий сертификат для сервера, но затем клиент должен быть настроен вручную, чтобы ему доверять.

1 голос
/ 15 декабря 2009

Я брошу осторожность ветру и попытаюсь сжать огромный предмет.
SSL пытается решить две проблемы:
1) Аутентификация и, следовательно, доверие, т. Е. Может ли клиент доверять серверу и наоборот
2) Связь без подслушивания

1) Обрабатывается с помощью посредника, то есть доверенной третьей стороны - это так называемые «корневые центры сертификации» (или корневые центры сертификации), например Verisign, RSA и т. Д.
Если компания хочет аутентифицировать пользователей и, что более важно, если пользователь хочет аутентифицировать веб-сайт компании, к которому она подключается, т.е. к вашему банку, то корневой центр сертификации выдает компании сертификат, который фактически говорит: «Я доверяю корневому центру сертификации, подтверждаю, что доверяю этой компании X». те, о ком они говорят, и я выдаю сертификат соответственно ». Таким образом, вы получаете цепочку доверия, т.е. я доверяю сертификату ACME Co, потому что Root CA Verisign создал и выпустил его.

2) После того как обе стороны аутентифицированы, сертификат (обычно X590 ) используется для формирования безопасного соединения с использованием шифрования с открытым / закрытым ключом.

Безнадежно простой и неполный, но надежда, которая дает грубое представление

1 голос
/ 15 декабря 2009

SSL сам по себе не является волшебной пулей, которая делает все безопасным. У безопасности нет таких вещей.

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

Для защиты приложения с помощью SSL необходимо сделать две вещи:

  • Измените код приложения для использования SSL.
  • Определите модель доверия сертификата (и разверните и настройте приложение соответственно).

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

0 голосов
/ 15 декабря 2009

Включение TLS (в разговорной речи «SSL») делает не , что делает ваш сайт волшебным и безопасным. Вы все еще можете быть уязвимы к уязвимостям на уровне приложений, таким как переполнение стека, внедрение SQL, XSS и CSRF.

Как объяснили другие ответы, TLS защищает только человека посередине. Трафик между клиентом и правильно настроенным сервером TLS не может быть перехвачен или изменен, и клиент может надежно подтвердить подлинность сервера, проверяя сертификат X.509. Это не позволяет злоумышленнику выдавать себя за ваш TLS-сервер.

0 голосов
/ 15 декабря 2009

SSL на самом деле делает две вещи:

  1. Зашифровывает сообщение, так что наблюдатель, увидевший поток данных, не сможет прочитать беседу.
  2. Гарантирует, что вы разговариваете с тем, с кем, по вашему мнению, разговариваете.

Только для № 2 вам необходимо получить официальные сертификаты. Если вам нужно только зашифровать связь без установки доверительных отношений, вы можете использовать самозаверяющие сертификаты или алгоритм, который не требует сертификатов (например, Diffie-Helman ).

0 голосов
/ 15 декабря 2009

Это хороший учебник о том, как создавать самозаверяющие сертификаты для Apache.

Если вы хотите узнать, как работает SSL на сервере или клиенте, я предлагаю поискать его в Google. Как вы и подозревали, это очень сложная процедура, с большим количеством связи между клиентом и сервером, с очень специфической математикой и тоннами обработки. Существует также много теории, несколько протоколов и много разных алгоритмов и стандартов шифрования. Совершенно невероятно, как изменение http: // на https: // настолько просто для пользователя, но приводит к огромной работе для обеих сторон и так безопасно. Чтобы действительно понять это, вам нужно пройти курс безопасности (несколько курсов, чтобы полностью понять это), поскольку вся история шифрования уходит на то, чтобы сделать ваш вход в Gmail безопасным.

0 голосов
/ 15 декабря 2009

Вам необходимо иметь сертификат сервера, подписанный центром сертификации (CA), за который они будут взимать плату. Клиент должен доверять этому ЦС и иметь копию соответствующего открытого ключа ЦС. Затем клиент может проверить, что вы являетесь тем, кем себя называете (включая имя домена (из DNS) и отображаемое имя для https).

0 голосов
/ 15 декабря 2009

По большей части вам нужно купить и зарегистрировать сертификат извне.

0 голосов
/ 15 декабря 2009

Да и нет. Вы должны самостоятельно подписать сертификат и протестировать сайт с помощью SSL, прежде чем развертывать его с помощью SSL, прежде всего. Чтобы сделать общедоступный сайт безопасным по протоколу SSL, вам необходимо приобрести сертификат у одного из любого числа поставщиков сертификатов. Затем у вас будет сертификат, подписанный доверенной третьей стороной, привязанный к вашему доменному имени, чтобы браузеры пользователей не жаловались на то, что сертификат недействителен и т. Д. Включение SSL в значительной степени просто переключает переключатель, в противном случае. 1001 *

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