ssl - 如何配置 Camel jetty 生产者端点以使用 SSL 证书

标签 ssl jetty akka typesafe-stack

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/

相关文章:

ssl - 重新安装 Visual Studio 2017 Localhost 证书

php - 错误 0x1408F10B : "SSL3_GET_RECORD:wrong version number" with PayPal SDK

laravel - file_get_contents() : SSL operation failed with code 1. OpenSSL 错误信息

gwt - 需要帮助调试 GWT - Jetty 'unknown realm'

Akka Actor : Path lookup efficiency

redirect - Haproxy ssl 重定向握手失败

elasticsearch - Elasticsearch日志条目说明

java - Jetty 项目启动时出现一些错误

Akka 和蛋糕图案

scala - Akka Http HTTPS 配置导致 Chrome 返回 ERR_SSL_VERSION_OR_CIPHER_MISMATCH