当前位置: 首页 > 知识库问答 >
问题:

如何使用Camel 2.17+配置Jetty SSL连接器

慕容玉堂
2023-03-14

我使用Apache Camel 2.17.1,在Jetty组件(http://Camel.Apache.org/Jetty.html)上设置SSL客户端身份验证时遇到了一些问题。使用服务器SSL的第一部分运行平稳(设置服务器密钥存储并从浏览器访问HTTPSendpoint)。现在,我试图通过添加另一个路由(具有不同的http端口)来丰富应用程序,其中需要客户端证书。

从文档中,这可以通过以下方法实现,因为camel不会直接公开SSL属性:

<bean id="jetty" class="org.apache.camel.component.jetty.JettyHttpComponent">
<property name="sslSocketConnectors">
    <map>
        <entry key="8043">
            <bean class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
                <property name="password"value="..."/>
                <property name="keyPassword"value="..."/>
                <property name="keystore"value="..."/>
                <property name="needClientAuth"value="..."/>
                <property name="truststore"value="..."/>
            </bean>
        </entry>
    </map>
</property>

就像文档没有更新一样,因为SSLContextFactory中不再存在这些字段名。我设法找到了其他候选人,但犯了一个错误:

"org.eclipse.jetty.server.ssl.SslSelectChannelConnector" class doesn't exist anymore.
The JettyHttpComponent.setSslSocketConnectors() method accepts Connector interface objects. 

共有1个答案

松刚豪
2023-03-14

您是否尝试过文档中提到的替代方法:

<camel:sslContextParameters id="sslContextParameters">
    <camel:keyManagers keyPassword="keyPassword">
        <camel:keyStore 
          resource="/users/home/server/keystore.jks" 
          password="keystorePassword"/>
    </camel:keyManagers>
</camel:sslContextParameters>

<from uri="jetty:https://127.0.0.1/mail/?sslContextParametersRef=sslContextParameters"/>

当然,它要求您在URI中指定sslContextParametersRef参数,但它应该可以工作。

 类似资料:
  • 我正在尝试使用Azure AD(应用程序作为DB用户)从Spring Boot(2.0.1)Web应用程序连接到Azure SQL DB,但似乎无法连接点。 我遵循了使用Azure AD Auth进行连接的步骤。然而,我得到一个失败的登录。 我假设这是因为没有在JDBC url中设置“身份验证”属性,它只是直接对数据库进行身份验证(用户使用CREATE USER创建 有没有办法在连接时配置spri

  • 我是 Kafka 的新手,我写了一段写入主题的代码(制作人)。 现在,我被赋予了一项任务,即观察内容是否与主题相关。 我的技术主管提供的唯一信息是我应该安装kafka连接,并使用此XML: 我完全不知道在哪里或如何导入这个xml配置文件。我安装了kafka,将其放到本地运行,但所有配置文件通常采用以下格式: 部分输出: 我尝试在这里添加字段,但缺少许多字段,任何提示都将非常受欢迎,我做了一些研究,

  • 我使用EclipseLink作为使用Play框架和Akka的应用程序的持久性提供程序。在play framework 2.3.x中,应用程序正常运行。现在我正在迁移到2.4.x,随后将迁移到2.5.x,但是当我从eclipse外部运行应用程序时遇到了一些问题: “没有名为Default的EntityManager的持久性提供程序”。 随着Play Framework连接池库从BoneCP更改为Hi

  • 我想在应用程序和Oracle数据库之间建立连接。我没有以下数据库信息: URL 用户名 密码 我使用的配置如下所示: 这就是我如何获得一个新的实例: 之后,我尝试通过以下代码检索会话: null 但是,使用以下堆栈跟踪生成错误:

  • 我的WebApp使用多个数据库,我尝试使用GlassFish连接池来管理连接,但我发现配置示例只使用一个数据库。 那么,我该怎么办?创建与我正在使用的数据库数量相同的连接池,或者是否有方法将一个池配置为多个数据库?

  • 我正在尝试使用hive jdbc uber jar并配置jdbc接收器连接器。 但是连接器抛出错误: 配置 驱动程序位于路径中:/usr/share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib 我已经重新启动连接器,但同样的错误。我认为驱动程序类名必须在某些属性中设置。 知道吗?