Вы можете настроить компонент Netty4, как указано в официальных документах , сначала указав SSLContextParameters
для использования, который просто определяет, где можно найти сертификат для использования во время рукопожатия SSL, а затем установитеэто на компонент netty:
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("/users/home/server/keystore.jks");
ksp.setPassword("keystorePassword");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("keyPassword");
SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);
NettyComponent nettyComponent = getContext().getComponent("netty4", NettyComponent.class);
nettyComponent.setSslContextParameters(scp);
Если вы используете Spring (Boot), это легко сделать во время процедуры инициализации контекста Camel:
@Bean
CamelContextConfiguration contextConfiguration() {
return new CamelContextConfiguration() {
@Override
public void beforeApplicationStart(CamelContext camelContext) {
// code goes in here
}
@Override
public void afterApplicationStart(CamelContext camelContext) {
// noop
}
};
}
Обратите внимание, что компонент выше назван netty4
, это также должно отражаться в остальной части конфигурации:
restConfiguration()
.component("netty4")
.host("0.0.0.0")
.scheme("https")
.port(8443)
...
Подобный подход можно увидеть, только с Jetty в качестве сконфигурированного HTTP-сервера в одном из моих технических демонстрационных проектов, который хранит Конфигурация SSLContextParamteter в своем собственном компоненте, который вводится в Конфигурация Jetty , которая просто устанавливает эти параметры в настроенный компонент Jetty.Позже restConfiguration
будет абстрагирован от базового класса , от которого будут расширяться определенные маршруты, выставляющие конечные точки через Jetty.
Обратите внимание, что вы можете использовать компонент Jetty по умолчанию или компонент Netty.В моей демонстрации у меня была ошибка с клиентами TLS 1.0 и 1.1, которые не могли подключиться, поскольку Jetty 9.4 по умолчанию исключил все небезопасные шифры, и Camel не распространил настройки должным образом на Jetty, что, надеюсь, должно быть решено сейчас.