2012-06-07 7 views

ответ

0

Хотя SSL/TLS doesn't strictly require certificates, HTTPS ожидает сертификаты, поскольку RFC 2818 (в частности, раздел 3.1) четко относится к сертификатам X.509.

Более подробную информацию вы найдете в this answer on ServerFault, на очень похожий вопрос.

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

EDIT:

Oracle provider for JSSE не поддерживает PSK шифровальные suties (или OpenPGP сертификаты). Самые близкие к общему ключу, которые вы выберете, - это кешированные шифровальные пакеты Kerberos.

+1

Необходимо также отметить, что RFC 2818 был введен задолго до того, как эти альтернативные методы были введены в TLS. Следовательно, RFC явно упоминает сертификаты, потому что к тому времени еще ничего не было доступно. Кроме того, идентификатор сервера можно подтвердить, зная общий секретный ключ (в случае наборов PSK) или доверяя ключу OpenPGP (когда OpenPGP используется для аутентификации). –

+0

@ EugeneMayevski'EldoSorp, просто из любопытства, интегрирует * SecureBlackbox * в качестве дополнительного провайдера в JSSE API (тем самым делая эти шифровые сюиты доступными для традиционных приложений Java) или требуется совсем другой API? – Bruno

+0

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

1

Нет, вы не можете. Вам нужен сертификат для подключения через HTTPS. Вы можете использовать самозаверяющий сертификат для своих целей.

-2

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

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048 

Этот сертификат будет храниться в keystore.jks и действует в течение 360 дней.

В зависимости от реализации сервера HTTP вы обычно указывают его в хранилище, предоставляя keystoreFile аргумент, и keystorePass для установки пароля (имена свойств, взятую из HTTP Connector Apache Tomcat, но они похожи на других серверах HTTP.

1

Да, вы можете использовать несколько разных методов аутентификации в SSL/TLS, включая симметричные ключи (комплекты шифрования PSK) и комбинацию имени пользователя и пароля (комплекты шифрования SRP). Я не могу сказать о встроенных механизмах Java, но SecureBlackbox (включая версию Java) позволяет использовать упомянутые механизмы как на стороне клиента, так и на стороне сервера SSL/TLS. Это также относится к предоставленным клиентским и серверным компонентам HTTPS.

1

Посмотрите на принятый ответ на следующий вопрос:

How to ignore SSL certificate errors in Apache HttpClient 4.0

Вам просто нужно создать TrustManager, что в принципе ничего не проверять и просто доверяет все. Хотя я могу понять, почему это полезно при разработке, это отчасти отрицает цель SSL. TrustManager должен избегать атаки «Человек в центре», где третья сторона представляет собой сервер для перехвата и манипулирования данными и т. Д., Поэтому, если вы не проверяете сертификат серверов, любой может предоставить «недействительный» сертификат!

+1

Это все еще используется сертификат (хотя и небезопасный). Вопрос, похоже, не хочет идти на компромисс в отношении безопасности, но хочет использовать (предварительно общий) симметричный ключ. – Bruno

+0

Ох. Руки вверх - моя ошибка. Я неправильно понял вопрос – Andy

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