|
Apr. 5th, 2010|03:04 pm |
Весь смак в том, что удостоверение подлинности и сеансовый ключ шифрования слиты воедино. Так чтобы выработанный общий сеансовый ключ был общим именно с тем, кто удостоверил свою подлинность. Поэтому после аутентификации сервера вам все равно обоим придется ChangeCipherSpec сделать.
Соответственно, а нафига тебе шифрованное соединение до установления подлинности второй стороны? Пока ты не знаешь с кем оно, следует предполагать что оно со злоумышленником.
Соответсвенно, сервер который с тебя сертификата не требует (только потому, что тебе это слишком геморойно, а то бы требовал - двухсторонняя аутентификация по сертификатам предусмотрена), прежде чем выдать тебе что-то, что заслуживает шифрованного соединения, скорее всего попросит тебя ввести логин и пароль. И уже в этот момент тебе необходима аутентифицированность сервера - ты должен знать, кому ты свой пароль отправлеяешь.
Бывают случаи, правда, когда используется авторизация клиента по сертификату. Тогда клиент устанавливает соединение, аутентифицирует сервер (устанавливает шифрованное соединение) а потом говорит "а вот хочу того, что требует дополнительных прав". Сервер ему "а сертификат давай", после чего выполняется ПОВТОРНЫЙ ХЭНДШЕЙК и они аутентифицируют друг друга заново и МЕНЯЮТ СЕАНСОВЫЙ КЛЮЧ ШИФРОВАНИЯ. Чтобы оба были уверены в том что ключ у них общий ровно с тем, кого они аутентифицировали.
|
|