Можно ли использовать ssl с httpconnection без использования сертификата в java? Я хочу использовать случайное число или семплированный ключ.В java SSL через https без сертификата
Спасибо Райхан
Можно ли использовать ssl с httpconnection без использования сертификата в java? Я хочу использовать случайное число или семплированный ключ.В java SSL через https без сертификата
Спасибо Райхан
Хотя 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.
Нет, вы не можете. Вам нужен сертификат для подключения через HTTPS. Вы можете использовать самозаверяющий сертификат для своих целей.
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.
Да, вы можете использовать несколько разных методов аутентификации в SSL/TLS, включая симметричные ключи (комплекты шифрования PSK) и комбинацию имени пользователя и пароля (комплекты шифрования SRP). Я не могу сказать о встроенных механизмах Java, но SecureBlackbox (включая версию Java) позволяет использовать упомянутые механизмы как на стороне клиента, так и на стороне сервера SSL/TLS. Это также относится к предоставленным клиентским и серверным компонентам HTTPS.
Посмотрите на принятый ответ на следующий вопрос:
How to ignore SSL certificate errors in Apache HttpClient 4.0
Вам просто нужно создать TrustManager, что в принципе ничего не проверять и просто доверяет все. Хотя я могу понять, почему это полезно при разработке, это отчасти отрицает цель SSL. TrustManager должен избегать атаки «Человек в центре», где третья сторона представляет собой сервер для перехвата и манипулирования данными и т. Д., Поэтому, если вы не проверяете сертификат серверов, любой может предоставить «недействительный» сертификат!
Необходимо также отметить, что RFC 2818 был введен задолго до того, как эти альтернативные методы были введены в TLS. Следовательно, RFC явно упоминает сертификаты, потому что к тому времени еще ничего не было доступно. Кроме того, идентификатор сервера можно подтвердить, зная общий секретный ключ (в случае наборов PSK) или доверяя ключу OpenPGP (когда OpenPGP используется для аутентификации). –
@ EugeneMayevski'EldoSorp, просто из любопытства, интегрирует * SecureBlackbox * в качестве дополнительного провайдера в JSSE API (тем самым делая эти шифровые сюиты доступными для традиционных приложений Java) или требуется совсем другой API? – Bruno
Да, это для базовой криптографии, но для SSL и других высокоуровневых материалов есть другой API, более простой в использовании и более гибкий. –