Соединение Java HTTPS с пользовательскими CipherSuites - PullRequest
1 голос
/ 22 апреля 2011

Допустим, я пытаюсь подключиться к веб-серверу по протоколу HTTPS, используя HttpsURLConnection. Теперь, если я установлю / ограничу шифры на Клиенте, используя:

System.setProperty("https.cipherSuites", myCustomCipherSuites);

Я хочу знать, как шифр будет согласован между моим клиентом Java и веб-сервером. Например, если мои комплекты шифров включают [средний, сильный] и веб-сервер поддерживает [слабый, средний, сильный, сильный] ...

1- Будет ли выбран «сильный», т. Е. Самый сильный из доступных на клиенте и сервере? 2- Определен ли веб-сервером приоритет, а затем проверка доступности на клиенте, чтобы найти шифр с наивысшим приоритетом (на веб-сервере) И взаимно доступный (как на клиенте, так и на сервере)?

Кроме того, если у меня есть список шифров "a", "b", "c" и "d", а веб-сервер поддерживает только "e", "f" и "g" ... могу ли я убедитесь, что клиент и сервер исчерпали бы все возможности согласования соединения с попыткой найти общий шифр перед тем, как сдаться (так как нет общего доступного шифра). Я почти уверен, что ответом на это будет «да» ... но я просто хочу это подтвердить. * * 1010

1 Ответ

1 голос
/ 23 апреля 2011

Что касается вашего первого вопроса:

Клиент предлагает список наборов шифров в своем предпочтительном порядке (наиболее желательный первый, наименее желательный последний).

Сервер предполагается выбрать первый элемент в списке, с которым он согласен, игнорируя любые предпочтения, которые может иметь сервер.Однако нет (простого) способа запретить серверу использовать его собственные настройки (если они не совпадают с настройками клиента).

Что касается второго, если не существует соответствующего набора шифров, соединениевыходит из строя.На самом деле это не «выхлоп», а «я поддерживаю A, B, C и D» |«Я не поддерживаю ничего из этого. Думаю, мы не можем подключиться».

...