WSO2 IntegrationStudio 8.2.0 Отключить проверку

Благодаря @ycr (:-)) я сделал несколько шагов вперед, но все еще получал ошибки SSL при попытке достичь конечной точки, требующей SSL на стороне клиента (т.е. сертификат p12 или эквивалент .crt/.key). Я последовал этому, как предложил ycr. Теперь, когда я вызываю конечную точку из Postman через wso mi (встроенный экземпляр в Integration Studio), он выдает: «Ошибка проверки имени хоста для хоста», ссылка на исключение: org.apache.synapse.transport.http.conn.ClientSSLSetupHandler .verify(ClientSSLSetupHandler.java:182).

Теперь, как я уже говорил в предыдущем посте, я могу успешно подключиться к конечной точке (https://37.186.199.242:6443/web-app) скриптом Python:

cert = path\cert.crt
key = path\cert.key
headers = {'Content-type': 'application/json', 'Accept': 'application/json, text/plain, */*'}
data = json.dumps(None)
response = requests.post("https://37.186.199.242:6443/web-app", data=data, headers=headers, cert=(cert,key), verify=False)

который дает мне тот же ответ, что и запрос URL-адреса с помощью chrome с установленным сертификатом cert.p12.

но когда я пытаюсь выполнить request.post с verify=True, я получаю следующее исключение python:

requests.exceptions.SSLError: HTTPSConnectionPool(host='37.186.199.242', port=6443): Max retries exceeded with url: /web-app (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)')))

что звучит почти так же, как исключение SSLException, выдаваемое ClientSSLSetupHandler. Таким образом, я думаю, должен ли я воспроизвести такое же поведение в wso mi, отключив проверку хоста? Глядя на исходный код класса java ClientSSLSetupHandler.java, это достигается установкой HostnameVerifier = AllowAll.

что касается встроенного кода:
/** * The ALLOW_ALL HostnameVerifier essentially turns hostname verification * off. This implementation is a no-op, and never throws the SSLException. */ многообещающе! Но как это установить?

Я прошел через несколько постов. Лучшая догадка, которую я смог найти, это здесь, предлагающая включить в axis2.xml следующее.

<transportSender name = "https" class = "org.apache.synapse.transport.passthru.PassThroughHttpSSLSender">
   <!--...-->
   <!--supports Strict|AllowAll|DefaultAndLocalhost or the default if none specified -->
   <parameter name = "HostnameVerifier">AllowAll</parameter>
   <!--supports Strict|AllowAll|DefaultAndLocalhost or the default if none specified -->
</transportSender>
  1. Не уверен, что мне следует настроить атрибут класса transportSender на target class="org.apache.synapse.transport.http.conn.ClientSSLSetupHandler" или, в конечном итоге, на какой-либо другой суперкласс или абстрактные классы.
  2. Кажется, что axis2.xml перезаписывается движком MI каждый раз, когда я его запускаю. Значит, должен быть другой путь! Любое предложение? заранее спасибо

p.s. поскольку я очень увлекаюсь wso, но это довольно сложный мир, есть ли документ, который я могу изучить, объясняющий (для таких чайников, как я:-), как каждая часть связана? Я имею в виду: carbon, synapse, axis2, диспетчер приложений wso, микроинтегратор wso и его панель управления, esb...

Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
Обновление драйверов Microsoft ODBC (с 17 до 18) для PHP
Обновление драйверов Microsoft ODBC (с 17 до 18) для PHP
Все знают, что PHP v7.4 потерял поддержку, и наши недавние старые приложения должны обновиться до PHP v8.x. ...
1
0
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Отключение проверки имени хоста не рекомендуется. В идеале вы должны создавать правильные сертификаты с правильным доменным именем и использовать доменное имя для доступа к службе, а не IP-адрес. Если вы хотите отключить проверку имени хоста, попробуйте добавить следующее в deployment.toml

[transport.http]
sender.hostname_verifier = "AllowAll"

Обновлять

Поскольку у вас есть общедоступный IP-адрес, я только что проверил ваш сертификат, и он не выглядит правильным.

Ваш CN должен быть чем-то вроде *.dflight.com, тогда вы должны использовать это имя хоста для доступа к сервису (например: https://staging.dflight.com). Если вы не приобрели этот домен, вы можете добавить его в файл hosts и получить к нему доступ.

Взгляните на следующий сертификат, используемый WSO2.

Этот ответ также поможет вам, я верю.

спасибо ycr еще раз. У нас есть wildcard сертификат для нашего производственного веб-сайта. Клиентские SSL-сертификаты используются для ограничения доступа к некоторым частям сайта, таким как промежуточная и предварительная подготовка, администрация бэк-офиса или другие зарезервированные области, которые не предназначены для общего доступа, хотя и доступны в общедоступном Интернете. Генерацией таких сертификатов занимается наш поставщик, и по неизвестным мне причинам он использует собственные сертификаты ЦС. Чтобы дать вам представление, найдите здесь снимок клиентского сертификата .p12, который был предоставлен мне. Единственное, что я могу сделать на данный момент, это попытаться отключить проверку имени хоста :-(, надеюсь, это работает так же, как и в реализации pyhton.

кстати настройка: [transport.http]sender.hostname_verifier = "AllowAll" в deployment.toml работает 100% . Только что проверил :-)

Cristiano 15.05.2023 08:25

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