Назад | Перейти на главную страницу

Как отключить сокращенное квитирование SSL, чтобы выполнять полное квитирование при каждом вызове на lighttpd?

Я понимаю поток подтверждения ssl, но у меня возникла логическая проблема. Когда пользователь выбирает сертификат, мне нужно проверить его на соответствие приложению, чтобы знать, что он надежен и соответствует любому пользователю системы. Но если нет, я должен разрешить пользователю снова попросить выбрать другой. Возможно, на компьютере пользователя установлено несколько сертификатов, и он по ошибке выбрал неправильный сертификат.

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

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

Но как это сделать?

Самый актуальный вопрос, который я нашел, был https://security.stackexchange.com/questions/56623/avoiding-ssl-handshake-for-each-call.

  • В полное рукопожатие это то, что делают клиент и сервер, когда они не знают друг друга (ранее они не разговаривали или это было давно). При полном рукопожатии сертификаты отправляются, и происходит асимметричная криптография (RSA, Diffie-Hellman ...).
  • В сокращенное рукопожатие то, что клиент и сервер помнят друг друга; более точно, они запоминают алгоритмы и ключи, которые они установили в предыдущем полном рукопожатии, и соглашаются повторно использовать их (технически они повторно используют «главный секрет» и получают из него новые ключи шифрования для этого соединения).

Я могу освободить любой файл cookie, закрыть вкладку и отключить сохранение активности, второе рукопожатие не открывает запрос сертификата. Он использует предыдущее выбранное, а для Chrome, например, нет опции «запомнить мое решение», как у Firefox. То же самое происходит с Edge, Opera, Edge и т.д. Это стандарт?

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

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

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

Если мое приложение использует SSL для аутентификации пользователей, я не могу использовать несколько логинов без закрытия браузера, это неправильно, у него должен быть способ повторно согласовать эту аутентификацию.

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