Назад | Перейти на главную страницу

Ошибка проверки сертификата при отправке запроса на обслуживание от Weblogic

Я пытаюсь позвонить в сервисный центр salesforce.com. Я добавил цепочку сертификатов в свое хранилище ключей, но когда служба проверяет сертификат домена, он зависает на дикой карте для части поддомена CN, но это сертификат, который я взял непосредственно с сайта. Я обнаружил, что WebLogic не поддерживает подстановочные знаки в сертификате CN. Можно ли изменить CN без аннулирования сертификата.

Ошибка при тестировании службы из WebLogic OSB:

Вызов привел к ошибке: [Безопасность: 090504] Цепочка сертификатов, полученная от sensis-proxy-vs.sensis.com.au - 161.117.32.128 -> cs5.salesforce.com, не прошла проверку имени хоста. Сертификат содержит * .salesforce.com, но проверьте ожидаемый cs5.salesforce.com.

Проблема здесь в том, что верификатор имени хоста по умолчанию для WebLogic не поддерживает сертификаты SSL, в которых CN содержит подстановочный знак для имени хоста.

Можно изменить верификатор имени хоста WebLogic, и WebLogic поставляется с классом, который может проверять CN с помощью подстановочных знаков.

  1. Перейдите в консоль администратора WebLogic -> Среда -> Серверы -> ваш сервер -> Конфигурация -> SSL

  2. Нажмите "Заблокировать и изменить"

  3. Откройте крышку "Дополнительно"

  4. Измените "Проверка имени хоста" с "Верификатор имени хоста BEA" на "Пользовательский верификатор имени хоста"

  5. Установите "Custom Hostname Verifier" на weblogic.security.utils.SSLWLSWildcardHostnameVerifier

  6. Нажмите «Сохранить», а затем «Активировать изменения».

  7. Перезагрузите ваш сервер.

Друг, вы ищете для устранения проблем с SSL на сервере weblogic?

Ошибка:

FINE: ……….. Eating Exception ……….
java.security.NoSuchAlgorithmException: Algorithm ECDH not available
+ at javax.crypto.KeyAgreement.getInstance(DashoA13*..)+

Причина:

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

Просто чтобы дать вам краткое представление: шифр инициализируется на стороне клиента, и сервер должен выбрать любой из шифров, представленных клиентом, для связи по SSL. Если Сервер не поддерживает какой-либо такой алгоритм шифрования, который является общим для Клиента, связь не произойдет.

Итак, If может заставить клиента (Weblogic) использовать более слабые шифры, а сервер не имеет никаких ограничений на использование ограниченных шифров, тогда мы можем установить соединение через SSL.

Разрешение:

По умолчанию Weblogic Server использует реализацию SSL сертификата.

Вышеупомянутое исключение связано с тем, что реализация SSL сертификата не может получить общее согласование шифра.

Мы можем указать серверу Weblogic использовать реализацию SSL SUN для решения проблемы.

Чтобы использовать реализацию SSL SUN, мы можем использовать следующие свойства на сервере Weblogic:

  • Djavax.net.ssl.keyStore
  • Djavax.net.ssl.keyStoreType
  • Djavax.net.ssl.keyStorePassword
  • Djavax.net.ssl.trustStore
  • Djavax.net.ssl.trustStoreType
  • Djavax.net.ssl.trustStorePassword
  • Djava.protocol.handler.pkgs = com.sun.net.ssl.internal.www.protocol

все вышеуказанные свойства могут использоваться как свойства JAVA, так что JVM WLS использует эти значения, а не свою собственную реализацию.

Мы также можем использовать указанные выше свойства в нашем коде, как указано ниже:

System.setProperty( “javax.net.ssl.keyStore”, “***” );
System.setProperty( “javax.net.ssl.keyStoreType”, “JKS” );
System.setProperty( “javax.net.ssl.keyStorePassword”, “***” );
System.setProperty( “javax.net.ssl.trustStore”, “***” );
System.setProperty( “javax.net.ssl.trustStoreType”, “JKS” );
System.setProperty( “javax.net.ssl.trustStorePassword”, “***” );
Security.addProvider( new com.sun.net.ssl.internal.ssl.Provider() );
System.setProperty( “java.protocol.handler.pkgs”, “com.sun.net.ssl.internal.www.protocol” );

НОТА - Также для отладки времени выполнения SSL вы можете использовать консоль администратора. Для входа на сервер в консоль администратора >>>> Серверы >>> MS1 >>> отладка >>>> дерево веб-логики >>>> параметр ssl. Установите флажок и нажмите "Включить".

Перейдите в консоль администратора WebLogic -> Среда -> Серверы -> ваш сервер -> Конфигурация -> SSL

Откройте крышку "Дополнительно"

Измените "Проверка имени хоста" с "Верификатор имени хоста BEA" на "Нет"

Нажмите "Сохранить".

Перезагрузите ваш сервер.

В качестве альтернативы мы можем работать, как показано ниже.

Приведенный выше ответ № установка "Установить" Custom Hostname Verifier "на weblogic.security.utils.SSLWLSWildcardHostnameVerifier" не сработала для меня.

Я сделал следующие шаги, которые у меня сработали:

Перейти к

Консоль администратора WebLogic -> Среда -> Серверы -> ваш сервер -> Конфигурация -> SSL

  • Нажмите "Заблокировать и изменить"

    • Откройте крышку "Дополнительно"

    • Измените "Проверка имени хоста" с "Верификатор имени хоста BEA" на "Нет"

    • Нажмите «Сохранить», а затем «Активировать изменения».

    • Перезагрузите ваш сервер.

И клиентское приложение, которое подключается к этой среде с поддержкой SSL, я запустил java со следующей опцией -D:

-Dweblogic.security.SSL.ignoreHostnameVerification=true

Теперь я могу подключиться из клиентского приложения к среде с поддержкой SSL. Мой клиент должен работать с JMS с поддержкой t3s (SSL) на сервере Weblogic. Он решил следующее исключение, которое я получал в своем клиентском приложении:

javax.naming.CommunicationException: t3s://slc09kty.MYHost.com:7202: Destination 10.XX.XX.164, 7202 unreachable; nested exception is:
        javax.net.ssl.SSLKeyException: Hostname verification failed: