Соединение Apache Camel https через прокси-сервер Burp Suite выдает SSLException: неподдерживаемое или нераспознанное соJAVA

Программисты JAVA общаются здесь
Anonymous
Соединение Apache Camel https через прокси-сервер Burp Suite выдает SSLException: неподдерживаемое или нераспознанное со

Сообщение Anonymous »

Я хочу отправлять свои подключения Camel через прокси-сервер Burp Suite. Я импортировал свой сертификат Burp Suite в cacerts.
Таким образом, следующий пример работает: запрос появляется в Burp Suite, и программа завершается без ошибок.
< pre class="lang-java Prettyprint-override">

Код: Выделить всё

  public static void request() {
try {
String url = "https://example.com";

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("localhost", 8080));

URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection(proxy);

con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
System.out.println("Response Code: " + responseCode);

BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();

while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();

System.out.println("Response Content:");
System.out.println(response.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
Теперь я хочу сделать то же самое в Camel, но получаю исключение javax.net.ssl.SSLException: неподдерживаемое или нераспознанное сообщение SSL:

Код: Выделить всё

2024-07-01T18:55:05,280 my-app DEBUG [Camel (MyCamel) thread #14 - file://data/population/pupil] o.a.c.c.f.GenericFileConsumer.poll(GenericFileConsumer.java:154) Took 1ms to poll: data\population\pupil
2024-07-01T18:55:05,280 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.c.p.SendProcessor.process(SendProcessor.java:171) >>>> https://example.com Exchange[]
2024-07-01T18:55:05,281 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.c.c.h.HttpProducer.process(HttpProducer.java:273) Executing http GET method: https://example.com
2024-07-01T18:55:05,281 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.c.p.RequestAddCookies.process(RequestAddCookies.java:123) CookieSpec selected: default
2024-07-01T18:55:05,281 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.c.p.RequestAuthCache.process(RequestAuthCache.java:77) Auth cache not set in the context
2024-07-01T18:55:05,281 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.i.c.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:267) Connection request: [route: {tls}->https://localhost:8080->https://example.com:443][total available: 0; route allocated: 0 of 20; total allocated: 0 of 200]
2024-07-01T18:55:05,281 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.i.c.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:312) Connection leased: [id: 1][route: {tls}->https://localhost:8080->https://example.com:443][total available: 0; route allocated: 1 of 20;  total allocated: 1 of 200]
2024-07-01T18:55:05,281 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.i.e.MainClientExec.execute(MainClientExec.java:234) Opening connection {tls}->https://localhost:8080->https://example.com:443
2024-07-01T18:55:05,282 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.i.c.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:139) Connecting to localhost/127.0.0.1:8080
2024-07-01T18:55:05,282 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.c.s.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:366) Connecting socket to localhost/127.0.0.1:8080 with timeout 0
2024-07-01T18:55:05,283 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.c.s.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:430) Enabled protocols: [TLSv1.3, TLSv1.2]
2024-07-01T18:55:05,283 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.c.s.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:431) Enabled cipher suites:[TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
2024-07-01T18:55:05,283 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.c.s.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:435) Starting handshake
2024-07-01T18:55:05,406 my-app DEBUG [Thread-5 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@42d7b96)] o.a.a.a.c.s.i.QueueImpl.deliver(QueueImpl.java:2958) Queue login/success doing deliver.  messageReferences=0 with consumers=1
...

...
2024-07-01T18:26:55,368 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.h.i.c.PoolingHttpClientConnectionManager.releaseConnection(PoolingHttpClientConnectionManager.java:351) Connection released: [id: 1][route: {tls}->https://localhost:8080->https://example.com:443][total available: 0; route allocated: 0 of 20; total allocated: 0 of 200]
2024-07-01T18:26:55,368 my-app DEBUG [Camel (MyCamel) thread #15 - timer://foo] o.a.c.p.Pipeline.continueProcessing(PipelineHelper.java:66) Message exchange has failed: so breaking out of pipeline for exchange: Exchange[] Exception: javax.net.ssl.SSLException: Unsupported or unrecognized SSL message
Вот как выглядит мой маршрут:

Код: Выделить всё

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class MyRoute extends RouteBuilder {

@Override
public void configure() throws Exception {

getCamelContext().getGlobalOptions().put("http.proxyHost", "localhost");
getCamelContext().getGlobalOptions().put("http.proxyPort", "8080");

onException(Exception.class)
.handled(true)
.log("Exception occurred : ${exception.message}")
.end();

from("timer://foo?fixedRate=true&period=60000")
.startupOrder(1)
.to("https://example.com")
.convertBodyTo(String.class)
.log("Response : ${body}");
}
}
Я не понимаю, почему Camel не работает, хотя указанный выше метод запроса работает? Предыдущий рабочий код должен демонстрировать, что хост, порт и сертификат работают, и это не должно быть проблемой конфигурации.
Для вашей информации, это приложение Spring Boot 2.7.18, использующее Camel 3.14.9. на Java 8. В настоящее время я не могу обновить его из-за технического долга, поэтому в настоящее время меня интересуют решения, которые я могу использовать с тем, что у меня есть. В настройках пакета Burp в разделе «Переговоры TLS» я выбрал «Использовать все поддерживаемые протоколы и шифры вашей установки Java»

Подробнее здесь: https://stackoverflow.com/questions/786 ... tion-unsup

Вернуться в «JAVA»