Camel jetty 端点允许多个 SSL 选项,但仅适用于消费者(即服务器端)。参见 Apache Camel Jetty
有没有办法不用写一堆代码就强制生产者使用证书呢?远程服务器需要客户端身份验证。
最佳答案
看起来编码是唯一的选择。我尝试过两种选择:将 SSL 配置为 (1) JettyComponent 或 (2) https4 组件。
def configJetty = {
println("Configuring Jetty component...")
val ksp = new KeyStoreParameters()
ksp.setResource(keyStore)
ksp.setPassword(keyPassword)
val kmp = new KeyManagersParameters()
kmp.setKeyStore(ksp)
kmp.setKeyPassword(keyPassword)
val scp = new SSLContextParameters()
scp.setKeyManagers(kmp)
val jettyComponent = camelContext.getComponent("jetty").asInstanceOf[JettyHttpComponent]
jettyComponent.setSslContextParameters(scp)
或者
def configHttps4 = {
println("Configuring HTTPS4 component...")
val ksp = new KeyStoreParameters()
ksp.setResource(keyStore)
ksp.setPassword(keyPassword)
val tsp = new KeyStoreParameters()
tsp.setResource(trustStore)
tsp.setPassword(trustPassword)
val kmp = new KeyManagersParameters()
kmp.setKeyStore(ksp)
kmp.setKeyPassword(keyPassword)
val tmp = new TrustManagersParameters()
tmp.setKeyStore(tsp)
val scp = new SSLContextParameters()
scp.setKeyManagers(kmp)
scp.setTrustManagers(tmp)
val httpComponent = camelContext.getComponent("https4").asInstanceOf[HttpComponent]
httpComponent.setSslContextParameters(scp)
那么端点 URL 可以是:
https4://somewhere.com
或
jetty:https://somewhere.com
注意:使用上面的代码,jetty 组件将无法再使用清晰的 HTTP。
关于ssl - 如何配置 Camel jetty 生产者端点以使用 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687237/