2011-01-16 10 views
0

У меня есть следующий вопрос о SSL/TLS.
После приветствия сервера начинается фаза аутентификации сервера.
Из различных статей/книг представляется, что эта фаза не является обязательной. Например. в викиКонфигурация безопасности java для ssl

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

Но я не понимаю, что значит сказать, что это зависит от комплекта шифрования.
Так что я понимаю, либо ServerKeyExchange, либо Certificate следует за ServerHello.
Итак, мой вопрос в том, может ли аутентификация сервера быть опущена вместе?
Например, чтобы опустить попытку клиента в Tomcat, вы просто настраиваете соединитель, чтобы не запрашивать его.
Как можно пропустить аутентификацию сервера? Это зависит от используемой java-структуры, если она ее поддерживает?
И что означает опустить аутентификацию сервера? Если сертификат не отправляется, то ServerKeyExchange становится обязательным, или, как правило, каркасы разрешают предоставление локального открытого ключа вместо того, если вы хотите выполнить фазу аутентификации по протоколу передачи для выполнения или потому, что это не имеет никакого смысла?
Или это зависит от комплекта шифрования как-то, как предполагает wiki?
ПРИМЕЧАНИЕ:
Я понимаю, что сервер всегда должен быть аутентифицирован. Контекст моей проблемы - это клиентское приложение и сервер, работающие на одном компьютере (и, как мне кажется, Java-среда выполнения), поэтому можно считать безопасным обходить аутентификацию сервера (я думаю).

Любой вход очень приветствуется!
Спасибо!

ответ

1

В TLS/SSL аутентификация сервера является необязательной. Если вы выбрали пакет шифрования TLS/SSL без авторизации (например, TLS_NULL_WITH_NULL_NULL (отключает аутентификацию и шифрование) или TLS_DH_anon_XXXX (используйте только шифрование) в спецификации TLS), сертификат сервера не будет отправлен.

TLS/SSL без использования authn, похоже, не поддерживается чипом pure-Java. Но я думаю, что родной разъем с SSLCipherSuite=aNULL поддерживает его.

Я не знаю, что можно отключить authn, т. Е. Такие атаки, как DNS-spoofing, могут быть угрозами. Я думаю, что лучше использовать сервер, если производительность не проблема. Или, возможно, выбор TLS/SSL может быть выбран. (Шифрованная связь сервер-клиент может быть бессмысленным, поскольку администратор компьютера может украсть файлы сертификатов и дамп JVM кучи.)

+0

@habe: Спасибо за ответ. Таким образом, неидентификация возможна только в том случае, если клиент поддерживает анонимный DH? Если это не обязательно? Это значение в цитате из викии? Также, когда вы упоминаете родной коннектор, какой класс вы повторяете? – Cratylus

+1

@ user384706: Поддержка DH-anon предназначена для TLS без регистрации. Это не обязательно в спецификации. (см. § 9 RFC 2246). Поскольку «в зависимости от выбранного набора шифров» в Википедии, он должен быть таким же, как и я. А native-connector находится в http://tomcat.apache.org/native-doc/. – habe

+0

@habe: Последний вопрос: как вы думаете, что подмены спутников dns может быть угрозой, даже если клиент и сервер находятся на одной машине? – Cratylus

1

аутентификации и шифрования имеют важное значение, когда данные перемещаются поперек ненадежного сети или когда одна из конечных точек не является доверять. Если приложение использует только соединения на локальном хосте, то аутентификация и шифрование не важны (факт, что ваши данные и приложение на locahost подразумевает доверие к localhost).

+0

Как насчет DNS-спуфинга? – Cratylus

+1

«localhost» находится в вашем файле hosts; он не будет использовать DNS и, следовательно, не может быть подделан. Или используйте 127.0.0.1 – Jumbogram

+0

Ok. Но что, если ожидается, что еще одно имя решит 127.0.0.1? – Cratylus

0

вы можете получить SSL конфигурации кота 6 из

http://nayanmali.blogspot.com/

вы получили всю конфигурацию и как создать Keytool и как генерировать форму сертификата,

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