Ошибка рукопожатия weblogic ssl, проблема с доверенным хранилищем

Я получаю ошибку рукопожатия ssl, когда пытаюсь вызвать вызов службы https в weblogic. Я добавил сертификат сервера в хранилище доверенных сертификатов weblogic - "cacerts".

Команда, используемая для добавления хранилища доверия в скрипт запуска weblogic:

     JAVA_OPTIONS="-Dweblogic.security.SSL.trustedCAKeyStore="/weblogic92/server/lib/cacerts" ${JAVA_OPTIONS}"

экспорт JAVA_OPTIONS

Я пропустил что-нибудь еще - Любые указатели, чтобы решить эту проблему?

Протестировано ssl-соединение в поле сервера приложений с помощью SSLPoke.java, и оно прошло успешно.

   java -Djavax.net.ssl.trustStore=/weblogic92/server/lib/cacerts 
   -Djavax.net.ssl.trustStorePassword=changeit SSLPoke 192.16.2.6 8443

Трассировка журнала сервера Weblogic:

       javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1628)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:230)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:224)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1027)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:120)
    at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:574)
    at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:510)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:888)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1117)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:629)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)

person Sekhar    schedule 05.07.2013    source источник
comment
Может проблема в кавычках? попробуйте JAVA_OPTIONS=-Dweblogic.security.SSL.trustedCAKeyStore=/weblogic92/server/lib/cacerts ${JAVA_OPTIONS}   -  person Xargos    schedule 06.07.2013
comment
@Xargos - Нет, это не проблема с кавычками, я даже пытался использовать переменную. Хотя параметр SSL отображается в журналах запуска, когда я выполняю вызов ssl, я получаю ошибки на уровне приложения.   -  person Sekhar    schedule 08.07.2013
comment
Итак, когда вы выполняете keytool -v -list -keystore /weblogic92/server/lib/cacerts, вы можете видеть свой сервер? Также вы можете попробовать: -Djavax.net.ssl.trustStore=/weblogic92/server/lib/cacerts   -  person Display Name is missing    schedule 08.07.2013
comment
Какой ответ решения?   -  person kAmol    schedule 11.12.2020


Ответы (3)


Есть еще несколько вещей, которые вы можете попробовать:

  1. Вы также пробовали JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.security.SSL.trustedCAKeyStore=/weblogic92/server/lib/cacerts"

  2. Попробуйте добавить сертификаты с помощью консоли (servers->server_name->keystores)

  3. Возможно, вам также придется добавить следующие параметры Java:

    1. -Dweblogic.security.SSL.verbose=true

    2. -Dweblogic.security.SSL.enable.renegotiation=true

    3. -Dsun.security.ssl.allowUnsafeRenegotiation=true

  4. В server->server_name->SSL (дополнительно) установите флажок Use JSSE SSL.

  5. Установите флажок Использовать сертификаты сервера.

  6. Измените проверку имени хоста на None

person Xargos    schedule 08.07.2013
comment
я не вижу ни одной опции В серверах-›имя_сервера-›SSL (дополнительно) установите флажок Использовать JSSE SSL. в консоли администратора weblogic. Я использую веб-сервер 9.2.2. Пробовал варианты 1 и 3. - person Sekhar; 08.07.2013
comment
В настоящее время в журналах я вижу этот параметр java.protocol.handler.pkgs = weblogic.utils|weblogic.utils|weblogic.utils|weblogic.net, нужно ли мне вносить какие-либо изменения в handler.pkgs? - person Sekhar; 08.07.2013
comment
У меня есть административный и 2 управляемых экземпляра — вышеуказанные настройки 1 и 3 применяются к сценариям запуска на уровне управляемого экземпляра. Нужно ли мне применять его к экземпляру администратора?? - person Sekhar; 08.07.2013
comment
хм... не понял, что это weblogic 9.2.2 (weblogic92 мог быть указателем). В таком случае это может не сработать, поскольку я писал это, имея в виду WebLogic 11g. Что касается последнего комментария, я обычно добавляю его в setDomainEnv.sh (не уверен, что этот файл существует в вашей версии), но вам не нужно добавлять его в экземпляр администратора. Кстати, выполнение 1 и 3 вызвало другую ошибку или все та же? - person Xargos; 08.07.2013
comment
Наконец-то я смог решить эту проблему благодаря вашему указателю подтверждения изменения имени хоста, большое спасибо! - person Pieter De Bie; 04.11.2016

Я знаю, что это очень старый поток, но поскольку я столкнулся с той же проблемой, когда мое веб-приложение, развернутое в Weblogic (12.1), взаимодействовало с внешним веб-сервисом через HTTPS, я работал с различными решениями, чтобы наконец заставить его работать, несколько указателей из моей работы предоставлены в надежде, что они будут полезны кому-то в будущем.

Официальный документ Oracle по этой теме доступен здесь

How WebLogic Server Locates Trust
---------------------------------

WebLogic Server uses the following algorithm when it loads its trusted CA certificates:

1. If the keystore is specified by the -Dweblogic.security.SSL.trustedCAkeystore 
   command-line argument, load the trusted CA certificates from that keystore.
2. Else if the keystore is specified in the configuration file (config.xml), load 
   trusted CA certificates from the specified keystore. If the server is configured 
   with DemoTrust, trusted CA certificates will be loaded from the 
   WL_HOME\server\lib\DemoTrust.jks and the JDK cacerts keystores.
3. Else if the trusted CA file is specified in the configuration file (config.xml), 
   load trusted CA certificates from that file (this is only for compatibility 
   with 6.x SSL configurations).
4. Else load trusted CA certificates from WL_HOME\server\lib\cacerts keystore.

Я попробовал вариант номер 1, т.е. указал путь к cacert -Dweblogic.security.SSL.trustedCAkeystore, импортировав сертификат в рекомендуемое хранилище доверенных сертификатов внутри работающего JDK, но это не сработало. Хотя я знаю, что импорт был успешным, поскольку он работает с классом Java, который я написал для доступа к тому же местоположению HTTPS, запустив его на том же JDK, но из-за пределов Weblogic.

Впоследствии я попробовал вариант номер 2, т.е. я импортировал сертификат в DemoTrust.jks, расположенный по адресу WL_HOME\server\lib\DemoTrust.jks. Это УСПЕШНО позволило моему развернутому веб-приложению взаимодействовать с внешним веб-сервисом через HTTPS.

person Gro    schedule 07.07.2020
comment
Простой способ сделать вариант 2: saltnlight5.blogspot.com/2016/07/ - person kAmol; 11.12.2020

Это проблема котировок. Удалите бессмысленные внутренние кавычки:

JAVA_OPTIONS="-Dweblogic.security.SSL.trustedCAKeyStore=/weblogic92/server/lib/c‌​acerts ${JAVA_OPTIONS}"
person user207421    schedule 12.03.2016