2016-11-13 5 views
-1

Во время установления связи SSL, шаг 3, который загружает сертификат с сервера, является необязательным.java ssl рукопожатие без загрузки сертификата

Итак, если я распространил сертификат с моим клиентом, как я могу пропустить загрузку, чтобы повысить производительность?

Обратите внимание, что я знаю, как загрузить локальный сертификат и как ему доверять. Но я не знаю, как пропустить процесс загрузки, и я не нашел ничего полезного в java-документе.

Заранее спасибо.

EDIT

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

+1

Если вы хотите подключиться к серверу, который не использует сертификат, это дубликат для [Как подключиться к SSL-серверу на Java, который не отправляет сертификат?] (Http://stackoverflow.com/ вопросы/29512394/как к подключению к ан-SSL-сервер-в-Java-что-оленья кожа-отправить-а-сертификат). Если вы спросите о подключении к серверу с сертификатом, но не загрузите его снова *, то вы действительно спросите о возобновлении сеанса, который дублируется для [возобновления TLS-соединения в Java] (http://stackoverflow.com/questions/12318325/resume -tls-соединение-в-Java). –

+0

@SteffenUllrich На самом деле я прошу подключиться к серверу с сертификатом, но без его загрузки _even в первый раз. Это возможно? – Immueggpain

+0

Ваш вопрос воплощает противоречие в терминах. Если вы используете набор шифров, для которого требуется сертификат, требуется сертификат. SSL не использует открытые ключи для шифрования, за исключением одного случая сообщения подтверждения. Поэтому ваш вопрос не имеет смысла. – EJP

ответ

2

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

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

Шифрование полезной нагрузки не производится сертификатом вообще. В лучшем случае он используется для обмена ключом шифрования на основе обмена ключами на основе RSA. Но для рекомендуемых в настоящее время ключевых обменов (ECDHE и, возможно, DHE) сертификат вообще не нужен.

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

+0

Фактически я использую сертификат для аутентификации. Но сертификат предоставляется в виде локального файла через автономную доставку. Я думаю, что имеет смысл иметь сертификат здесь. – Immueggpain

+2

@Immueggpain Сертификат, который предоставляется в виде локального файла, а не через провод, не может составлять часть любого возможного способа аутентификации через одноранговую сеть. Вы ничего не понимаете. – EJP

+1

@Immueggpain: Аутентификация заключается не только в том, что клиент знает, какой сертификат ожидать, а на том, что сервер доказывает, что он владеет этим сертификатом, то есть на сервере есть закрытый ключ. В TLS нет поддержки для того, чтобы это доказать, не отправляя сертификат. –

1

Во время установления связи по протоколу SSL шаг 3, который загружает сертификат с сервера, является необязательным.

Я не знаю, где вы получите ваш шаг числа от, но отправка сертификата сервера является обязательным, если клиентскими состояния в ClientHello сообщения, что он будет принимать неаутентифицированные шифры, и это конкретно описано в RFC 2246 как небезопасный.

Итак, если я распространил сертификат с моим клиентом, как я могу пропустить загрузку, чтобы повысить производительность?

Вы не можете.

Обратите внимание, что я знаю, как загрузить локальный сертификат и как ему доверять. Но я не знаю, как пропустить процесс загрузки, и я не нашел ничего полезного в java-документе.

Конечно, вы не нашли его. Его нет. Об этом вообще ничего не говорится в документации по Java или RFC 2246. Вы изобрели это требование. Это не означает, что поддержка Java JSSE или SSL сама по себе. Это не так.

Мой вопрос НЕ об использовании набора шифров, который не требует сертификата. У меня все еще есть сертификат и вы хотите использовать его открытый ключ для обмена симметричными ключами.

SSL не выполняет симметричный обмен ключами. Еще раз вы говорите о чем-то, чего не существует. Если вы хотите понять SSL, прочитайте RFC 2246. Если вы хотите изобрести свои собственные, не стесняйтесь, но не называйте это SSL, и не говорите себе, что он будет либо исполненным, либо безопасным, как SSL, что имеет почти 25 лет развития. Это не так.

+0

Я только что прочитал раздел RFC5246, раздел 7.4.2. Хотя _ _ Сервер ДОЛЖЕН отправлять сообщение сертификата, когда согласованный метод обмена ключами использует сертификаты для аутентификации_. Но определение сообщения - _ASN.1Cert certificate_list <0..2^24-1>; _. Хорошо, если я это правильно понимаю, я могу отправить сертификат NO и назвать его SSL (я полагаю, мы говорим о SSL/TLS здесь, ведь все они просто разные версии одной и той же вещи). Может быть, вы ссылаетесь на некоторые устаревшие материалы? – Immueggpain

Смежные вопросы