Ошибка рукопожатия SSL

Есть сторонние веб-сервисы, размещенные через HTTPS, при использовании веб-сервиса я сталкиваюсь с ошибкой сбоя рукопожатия SSL.

По соображениям безопасности у нас нет доступа к сторонним URL-адресам или сервисам, доступ к которым может получить только наш клиент.

Я сделал достаточно удара и испытания, но все еще не удалось.

Наше приложение работает на Weblogic 9.2.

Сторонние предоставили сертификат (формат.p7b). Я импортировал эти сертификаты в хранилище javakeys (cacerts), даже в хранилища ключей weblogic (demotrust.jks), но все еще с той же ошибкой. Я пробовал разные комбинации импорта сертификата в хранилище ключей, я также вижу запись сертификата в хранилище ключей.

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

Я думаю, что если мы решим эту проблему, то приложение также будет работать.

Приложение работает нормально на http, но на https выдает ошибку сбоя рукопожатия SSL.

Я правильно преобразовал из (.p7b в формат.cer и затем импортировал), даже использовал.p7b для.pem в.der формат, а затем импортировал в хранилище ключей java demotrust.jks, но все равно не работает.

Я пропустил какие-либо шаги, пожалуйста, дайте мне знать.

2 ответа

Решение

То же самое было решено добавлением сертификатов в файл cacerts и указанием того же на weblogic. Собственно цепочка сертификатов не была должным образом импортирована в файл cacerts.

Мы также столкнулись с той же проблемой. Мы пытались подключить сторонний сервер с установленным SSL-сертификатом 256encryption. Когда мы пытались подключить его из Java(v1.7), мы получали ошибку handshake_failure.

Мы следовали ниже шагов для решения проблемы:

  1. Загрузите действующую цепочку сертификатов SSL со стороннего сервера и установите ее в своих хранилищах хранилища ключей jdk (находится в C:\Program Files\Java\jdk1.7.0_79\jre\lib\security) в Windows. использовал следующий Java-класс с открытым исходным кодом для извлечения сертификата из стороннего URL

  2. Для установки сертификата в хранилище ключей вы можете использовать следующую команду: keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias helloroot -file hello.cer

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

Мы использовали Java 1.7 и Grails 2.3.1. Мы заставили Grails использовать TLSv1.1 при подключении к URL-адресу HTTPS. Существуют следующие способы заставить Grails использовать TLSv1.1 или новее

  • Путем настройки файла BuildConfig.groovy и добавления jvmArgs: ['-Dhttps.protocols = TLSv1.1']

    grails.project.fork = [... run: [maxMemory: 1280, minMemory: 128, отладка: false, maxPerm: 256, forkReserve: true, jvmArgs: ['-Dhttps.protocols = TLSv1.1'] ] ,...]

  • Вы можете передать параметр -Dhttps.protocol при запуске приложения Grails

    grails run-app -Dhttps.protocols=TLSv1.1

Другие вопросы по тегам