Клиент должен быть аутентифицирован сервером, поэтому ему необходимо отправить учетные данные. Учетные данные могут храниться в клиентской базе данных, как в зашифрованном виде. Поскольку сертификат сервера известен, для обеспечения лучшей безопасности клиент может использовать открытый ключ сервера для шифрования пароля. Но проблема в том, как отправить пароль без двойного шифрования.Отправка предварительно зашифрованных данных через SSL
Например, предположим, что URL-адрес аутентификации сервера «https://example.com/a?u=user&p=password», поэтому клиенту необходимо отправить SSL-зашифрованные данные этой строки на сервер. Поскольку клиент хранит только зашифрованный пароль, он должен найти способ отправить ssl_encrypt("https://example.com/a?u=user&p=")+pre_encrypted_password
в целом на сервер.
Клиент использует WinHTTP api, так есть ли способ достичь этого?
Хороший ответ, но я хотел бы отметить, что есть одна мотивация для предварительного шифрования пароля, хотя результат эквивалентен паролю: в случае, если один и тот же пароль используется для разных сервлетов. Поскольку исходный пароль больше не известен, его невозможно изучить и попробовать на других сайтах. Это похоже на предварительное вычисление статического HA1 в аутентификации дайджеста, а затем «забывание» исходных входов (имя пользователя, область, пароль). – Celada
@ Celada Я думаю, что вы должны прокомментировать ответ, а не вопрос;) –
@Celada В любом случае вы просто говорите точно, чего я пытаюсь достичь. В идеале я надеялся сделать это без изменения существующего кода сервера. Но похоже, что из-за фактов SSL это невозможно сделать. –