Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ApacheCamel上为HTTPS实现API(SSL)的最佳方法是什么?_Java_Apache_Maven_Apache Camel_Netty - Fatal编程技术网

Java 在ApacheCamel上为HTTPS实现API(SSL)的最佳方法是什么?

Java 在ApacheCamel上为HTTPS实现API(SSL)的最佳方法是什么?,java,apache,maven,apache-camel,netty,Java,Apache,Maven,Apache Camel,Netty,我希望使用ApacheCamel创建的API能够启用HTTPS。我已经对各种方法(使用Jetty、Netty等)进行了一些阅读,但我想知道在基于camel的API中实现SSL的最简单、最有效的方法是什么。这是我当前的配置,我更喜欢(为了简单起见,如果我可以使用Netty4HTTP) 谢谢大家 您可以按照官方文件中的说明配置Netty4组件,方法是首先指定要使用的SSLContextParameters,该参数仅定义在SSL握手过程中要使用的证书的位置,然后将其设置到netty组件上: KeySt

我希望使用ApacheCamel创建的API能够启用HTTPS。我已经对各种方法(使用Jetty、Netty等)进行了一些阅读,但我想知道在基于camel的API中实现SSL的最简单、最有效的方法是什么。这是我当前的配置,我更喜欢(为了简单起见,如果我可以使用Netty4HTTP)


谢谢大家

您可以按照官方文件中的说明配置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
,这也应反映在rest配置部分中:

restConfiguration()
    .component("netty4")
    .host("0.0.0.0")
    .scheme("https")
    .port(8443)
    ...
我们可以看到类似的方法,只是在我的一个技术演示项目中将Jetty配置为HTTP服务器,该项目将HTTP服务器保存在自己的bean中,该bean被注入到中,后者只是将该参数设置到定制的Jetty组件上。稍后,
restConfiguration
是某些通过Jetty暴露端点的路由将从中扩展


进一步注意,您可以使用默认的Jetty或Netty组件。在我的演示中,TLS 1.0和1.1客户端出现了一个错误,无法作为Jetty 9.4连接。默认情况下,排除了所有不安全的密码,Camel没有将设置正确传播到Jetty,希望现在可以解决这个问题。

您可以按照官方文件中的说明配置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
,这也应反映在rest配置部分中:

restConfiguration()
    .component("netty4")
    .host("0.0.0.0")
    .scheme("https")
    .port(8443)
    ...
我们可以看到类似的方法,只是在我的一个技术演示项目中将Jetty配置为HTTP服务器,该项目将HTTP服务器保存在自己的bean中,该bean被注入到中,后者只是将该参数设置到定制的Jetty组件上。稍后,
restConfiguration
是某些通过Jetty暴露端点的路由将从中扩展

进一步注意,您可以使用默认的Jetty或Netty组件。在我的演示中,TLS 1.0和1.1客户端出现了一个错误,无法连接到Jetty 9.4,默认情况下排除了所有不安全的密码,Camel没有将设置正确地传播到Jetty,希望现在可以解决