Я устраняю проблему на некоторых локальных сайтах с самозаверяющими сертификатами при использовании компонента http для выполнения HTTP-вызовов в маршрутах (приложение — Springboot 3.2.3, Apache Camel 4.2, Kotlin на Java 17). Я получаю сообщение об ошибке «javax.net.ssl.SSLException: неподдерживаемое или нераспознанное сообщение SSL» независимо от того, что я делаю, пока использую http-компонент, например:
.toD("https://")
Если я использую прокси-сервер для внешнего сайта, он работает нормально, но, похоже, прямые TLS-соединения с сайтами не работают. Я импортировал цепочку сертификатов в оба файла java cacerts, а также попробовал использовать собственный jks или PEM и ссылаться на местоположение в конфигурации приложения (camel.comComponent.http.sslContextParameters.trustManagers.keyStore.resource). Я создал собственный компонент/процессор для прямого вызова с помощью java.net.http.HttpClient, который работал нормально без отключения проверки SSL, чтобы исключить проблему с сертификатом или сайтом. PEM также отлично работает при вызове удаленного сайта в Postman.
Я решил попробовать отключить проверку HTTP-компонента, чтобы исключить проблемы, связанные с сертификатом, и определить, есть ли что-то еще не так, пока создание туннеля TLS в компоненте HTTP, но я не могу найти пример полностью реализованной CamelContextConfiguration. Ниже показано, что я пробовал, но все равно получаю сообщение «javax.net.ssl.SSLException: неподдерживаемое или нераспознанное сообщение SSL», используя .toD("https://")
HttpClientConfigurer
import org.apache.camel.component.http.HttpClientConfigurer
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder
import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager
import org.apache.hc.client5.http.socket.ConnectionSocketFactory
import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder
import org.apache.hc.client5.http.ssl.TrustSelfSignedStrategy
import org.apache.hc.core5.http.config.RegistryBuilder
import org.apache.hc.core5.ssl.SSLContextBuilder
import javax.net.ssl.HostnameVerifier
import javax.net.ssl.SSLSession
class DisableSSLVerificationConfigurer : HttpClientConfigurer {
override fun configureHttpClient(httpClientBuilder: HttpClientBuilder) {
val sslContext = SSLContextBuilder.create()
.loadTrustMaterial(null, TrustSelfSignedStrategy())
.build()
val sslSocketFactory = SSLConnectionSocketFactoryBuilder.create()
.setSslContext(sslContext)
.setHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build()
val socketFactoryRegistry = RegistryBuilder.create()
.register("https", sslSocketFactory)
.register("http", PlainConnectionSocketFactory.INSTANCE)
.build()
val connectionManager = BasicHttpClientConnectionManager(socketFactoryRegistry)
httpClientBuilder.setConnectionManager(connectionManager)
}
}
object NoopHostnameVerifier : HostnameVerifier {
override fun verify(hostname: String, session: SSLSession): Boolean {
return true
}
}
CamelContextConfig
import org.apache.camel.CamelContext
import org.apache.camel.spring.boot.CamelContextConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.apache.camel.component.http.HttpComponent
@Configuration
class HttpConfig {
@Bean
fun camelContextConfiguration(): CamelContextConfiguration {
return object : CamelContextConfiguration {
override fun beforeApplicationStart(context: CamelContext) {
val httpComponent = context.getComponent("https", HttpComponent::class.java)
httpComponent.setHttpClientConfigurer(DisableSSLVerificationConfigurer())
}
override fun afterApplicationStart(camelContext: CamelContext) {
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -component
Отключить проверку SSL в HTTP-компоненте Apache Camel 4.2. ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1730326140
Anonymous
Я устраняю проблему на некоторых локальных сайтах с самозаверяющими сертификатами при использовании компонента http для выполнения HTTP-вызовов в маршрутах (приложение — Springboot 3.2.3, Apache Camel 4.2, Kotlin на Java 17). Я получаю сообщение об ошибке «javax.net.ssl.SSLException: неподдерживаемое или нераспознанное сообщение SSL» независимо от того, что я делаю, пока использую http-компонент, например:
.toD("https://")
Если я использую прокси-сервер для внешнего сайта, он работает нормально, но, похоже, прямые TLS-соединения с сайтами не работают. Я импортировал цепочку сертификатов в оба файла java cacerts, а также попробовал использовать собственный jks или PEM и ссылаться на местоположение в конфигурации приложения (camel.comComponent.http.sslContextParameters.trustManagers.keyStore.resource). Я создал собственный компонент/процессор для прямого вызова с помощью java.net.http.HttpClient, который работал нормально без отключения проверки SSL, чтобы исключить проблему с сертификатом или сайтом. PEM также отлично работает при вызове удаленного сайта в Postman.
Я решил попробовать отключить проверку HTTP-компонента, чтобы исключить проблемы, связанные с сертификатом, и определить, есть ли что-то еще не так, пока создание туннеля TLS в компоненте HTTP, но я не могу найти пример полностью реализованной CamelContextConfiguration. Ниже показано, что я пробовал, но все равно получаю сообщение «javax.net.ssl.SSLException: неподдерживаемое или нераспознанное сообщение SSL», используя .toD("https://")
HttpClientConfigurer
import org.apache.camel.component.http.HttpClientConfigurer
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder
import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager
import org.apache.hc.client5.http.socket.ConnectionSocketFactory
import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder
import org.apache.hc.client5.http.ssl.TrustSelfSignedStrategy
import org.apache.hc.core5.http.config.RegistryBuilder
import org.apache.hc.core5.ssl.SSLContextBuilder
import javax.net.ssl.HostnameVerifier
import javax.net.ssl.SSLSession
class DisableSSLVerificationConfigurer : HttpClientConfigurer {
override fun configureHttpClient(httpClientBuilder: HttpClientBuilder) {
val sslContext = SSLContextBuilder.create()
.loadTrustMaterial(null, TrustSelfSignedStrategy())
.build()
val sslSocketFactory = SSLConnectionSocketFactoryBuilder.create()
.setSslContext(sslContext)
.setHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build()
val socketFactoryRegistry = RegistryBuilder.create()
.register("https", sslSocketFactory)
.register("http", PlainConnectionSocketFactory.INSTANCE)
.build()
val connectionManager = BasicHttpClientConnectionManager(socketFactoryRegistry)
httpClientBuilder.setConnectionManager(connectionManager)
}
}
object NoopHostnameVerifier : HostnameVerifier {
override fun verify(hostname: String, session: SSLSession): Boolean {
return true
}
}
CamelContextConfig
import org.apache.camel.CamelContext
import org.apache.camel.spring.boot.CamelContextConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.apache.camel.component.http.HttpComponent
@Configuration
class HttpConfig {
@Bean
fun camelContextConfiguration(): CamelContextConfiguration {
return object : CamelContextConfiguration {
override fun beforeApplicationStart(context: CamelContext) {
val httpComponent = context.getComponent("https", HttpComponent::class.java)
httpComponent.setHttpClientConfigurer(DisableSSLVerificationConfigurer())
}
override fun afterApplicationStart(camelContext: CamelContext) {
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79142957/disable-ssl-verify-in-apache-camel-4-2-http-component[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия