首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetty适用于HTTP,但不适用于HTTPS

Jetty适用于HTTP,但不适用于HTTPS
EN

Stack Overflow用户
提问于 2013-12-06 04:42:48
回答 1查看 306关注 0票数 1

我正在尝试创建一个码头消费者。我可以使用端点uri使其成功运行:

代码语言:javascript
复制
jetty:http://0.0.0.0:8080

但是,当我修改https的端点uri时:

代码语言:javascript
复制
jetty:https://0.0.0.0:8443

页面尝试加载时超时。这似乎很奇怪,因为camel documentation声明它应该开箱即用。

此后,我将一个签名的SSL加载到java的默认keystore中,并尝试在下面实现加载它:http://camel.apache.org/jetty.html

我有一个使用akka和scala的akka-camel库的基本Jetty实例。例如:

代码语言:javascript
复制
class RestActor extends Actor with Consumer {

    val ksp: KeyStoreParameters = new KeyStoreParameters();
    ksp.setPassword("...");
    val kmp: KeyManagersParameters = new KeyManagersParameters();
    kmp.setKeyStore(ksp);
    val scp: SSLContextParameters = new SSLContextParameters();
    scp.setKeyManagers(kmp);
    val jettyComponent: JettyHttpComponent = CamelExtension(context.system).context.getComponent("jetty", classOf[JettyHttpComponent])
    jettyComponent.setSslContextParameters(scp);

    def endpointUri = "jetty:https://0.0.0.0:8443/"
    def receive = {
        case msg: CamelMessage => {
            ...
        }
        ...
    }
    ...
}

这导致了一些进展,因为页面不再超时,而是给出“连接已中断”错误。我不确定接下来该怎么做,因为camel并没有抛出任何异常,而是在某个地方(显然)默默地失败了。

有没有人知道是什么导致了这种行为?

EN

回答 1

Stack Overflow用户

发布于 2013-12-06 05:43:00

在使用java的"keytool“时,我没有指定输出文件。它没有抛回一个错误,所以它可能去了某个地方。我创建了一个新的密钥库,并显式地将我的crt导入到密钥文件中。然后我显式地将文件路径添加到我创建的密钥库中,现在一切都正常了!

如果我不得不推测,事情可能会默默地失败,因为我将证书添加到jetty的通用证书库中,以便在符合条件的情况下使用,而不是显式地将其绑定为端点的SSL。

代码语言:javascript
复制
class RestActor extends Actor with Consumer {

    val ksp: KeyStoreParameters = new KeyStoreParameters();
    ksp.setResource("/path/to/keystore");
    ksp.setPassword("...");
    val kmp: KeyManagersParameters = new KeyManagersParameters();
    kmp.setKeyStore(ksp);
    val scp: SSLContextParameters = new SSLContextParameters();
    scp.setKeyManagers(kmp);
    val jettyComponent: JettyHttpComponent = CamelExtension(context.system).context.getComponent("jetty", classOf[JettyHttpComponent])
    jettyComponent.setSslContextParameters(scp);

    def endpointUri = "jetty:https://0.0.0.0:8443/"
    def receive = {
        case msg: CamelMessage => {
            ...
        }
        ...
    }
    ...
}

希望将来有人能将此代码用作使用akka-camel实现SSL上的Jetty的模板(令人惊讶的是,似乎没有任何示例)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20410272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档