1

我们必须通过 https 将 java camel 应用程序与外部系统连接起来。中间我们有一个代理,但是这个代理只接受http连接。

我已经在骆驼上下文中配置了 http 和 https 代理,但这似乎没有帮助。http4s 组件遇到连接关闭异常。所以我直接在 https4 端点配置了代理。此配置有效,但似乎组件希望通过 https 与我们的代理通信,我收到此异常。

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

我检查了调试日志,我可以看到这个日志条目,它表明到代理的连接是通过 https 完成的

[DEBUG]: org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection request: [route: {tls}->https://<proxy>:<port>->https://<3rdPartySystem>:443][total kept alive: 0; route allocated: 0 of 20; total allocated: 0 of 200]

这里骆驼组件配置

to("https4:<3rdPartySystem>/services/oauth2/token?proxyAuthHost=...&proxyAuthPort=...")

所以我的问题是:如何在 java 中配置代理,使 https 流量在 java 应用程序和代理之间通过 http 完成。从代理到第 3 方系统的通信应通过 https 完成。

顺便说一下,“旧”http-camel 组件与相同的代理完美配合。

4

1 回答 1

0

使用 proxyAuthScheme=http 来避免 SSLException

于 2021-06-24T13:26:42.460 回答