Двустороннее уточнение SSL
Я несколько озадачен тем, как работает двусторонний SSL. Как клиент создает свой сертификат для отправки на сервер? Он генерируется с сервера и передается клиенту?
Кроме того, в чем преимущество двустороннего SSL над односторонним SSL?
3 ответа
Оба сертификата должны существовать до подключения. Они обычно создаются центрами сертификации (не обязательно одинаковыми). (Существуют альтернативные случаи, когда проверка может быть проведена по-другому, но некоторая проверка должна быть сделана.)
Сертификат сервера должен быть создан центром сертификации, которому доверяет клиент (и в соответствии с соглашениями об именах, определенными в RFC 6125).
Сертификат клиента должен быть создан центром сертификации, которому доверяет сервер.
Это зависит от каждой стороны, чтобы выбрать то, что она доверяет.
Существуют онлайн-инструменты CA, которые позволят вам подать заявку на сертификат в вашем браузере и установить его там после того, как CA его выпустит. Они не обязательно должны находиться на сервере, который запрашивает аутентификацию по сертификату клиента.
Распределение сертификатов и доверительное управление - это роль инфраструктуры открытых ключей (PKI), реализуемой через центры сертификации. Клиент и серверы SSL/TLS, а затем просто пользователи этой PKI.
Когда клиент подключается к серверу, который запрашивает проверку подлинности сертификата клиента, сервер отправляет список центров сертификации, которые он готов принять, как часть запроса сертификата клиента. Затем клиент может отправить свой клиентский сертификат, если он этого хочет, и подходящий сертификат доступен.
Основными преимуществами аутентификации по сертификату клиента являются:
- Личная информация (закрытый ключ) никогда не отправляется на сервер. Клиент вообще не раскрывает свой секрет во время аутентификации.
- Сервер, который не знает пользователя с этим сертификатом, может все еще аутентифицировать этого пользователя, при условии, что он доверяет CA, который выпустил сертификат (и что сертификат действителен). Это очень похоже на то, как используются паспорта: вы, возможно, никогда не встречали человека, показывающего вам паспорт, но, поскольку вы доверяете органу выдачи, вы можете связать удостоверение личности с этим человеком.
Вас могут заинтересовать преимущества клиентских сертификатов для аутентификации клиентов? (на Security.SE).
То, что вы называете "Двусторонний SSL", обычно называется TLS/SSL с аутентификацией сертификата клиента.
В "нормальном" TLS-соединении с example.com только клиент проверяет, действительно ли он связывается с сервером для example.com. Сервер не знает, кто такой клиент. Если сервер хочет аутентифицировать клиента, обычно используют пароли, поэтому клиенту необходимо отправить имя пользователя и пароль на сервер, но это происходит внутри соединения TLS как части внутреннего протокола (например, HTTP), это не так. часть самого протокола TLS. Недостатком является то, что вам нужен отдельный пароль для каждого сайта, потому что вы отправляете пароль на сервер. Поэтому, если вы используете один и тот же пароль, например, для PayPal и MyPonyForum, то каждый раз, когда вы входите в MyPonyForum, вы отправляете этот пароль на сервер MyPonyForum, чтобы оператор этого сервера мог перехватить его и попробовать его на PayPal и мог производить платежи от вашего имени.,
Аутентификация сертификата клиента предлагает другой способ аутентификации клиента в соединении TLS. В отличие от пароля для входа, проверка подлинности сертификата клиента указана как часть протокола TLS. Он работает аналогично тому, как клиент аутентифицирует сервер: клиент генерирует пару открытого личного ключа и передает открытый ключ доверенному ЦС для подписи. CA возвращает сертификат клиента, который может использоваться для аутентификации клиента. Теперь клиент может использовать один и тот же сертификат для проверки подлинности на разных серверах (т. Е. Вы можете использовать один и тот же сертификат для PayPal и MyPonyForum, не рискуя злоупотреблять им). Это работает так, что после того, как сервер отправил свой сертификат, он также просит клиента предоставить сертификат. Затем происходит какое-то волшебство с открытым ключом (если вы хотите узнать подробности, прочитанные RFC 5246), и теперь клиент знает, что он связывается с нужным сервером, сервер знает, что он связывается с нужным клиентом, и у обоих есть некоторый материал общего ключа для шифрования и проверки. связь.
В двух отношениях ssl клиент запрашивает у сервера цифровой сертификат, а сервер запрашивает его у клиента. Это более безопасно, поскольку это оба пути, хотя это немного медленно. Как правило, мы не следуем этому, поскольку сервер не заботится о личности клиента, но клиент должен убедиться в целостности сервера, к которому он подключается.