【问题标题】:Camel Jetty SSL configuration: load keychain from a relative pathCamel Jetty SSL 配置:从相对路径加载钥匙串
【发布时间】:2020-09-01 22:07:41
【问题描述】:

我正在尝试为 Camel Jetty 配置 SSL。该项目是运行在Tomcat7上的WAR,我使用的是Maven-Tomcat插件进行调试。

这是SSL配置方法的代码,在我的RouteBuilder类下:

private void configureSslForJetty()
{
    KeyStoreParameters ksp = new KeyStoreParameters();
    ksp.setResource("ssl/keychain.p12");
    ksp.setType("PKCS12");
    ksp.setPassword("my_pass");

    KeyManagersParameters kmp = new KeyManagersParameters();
    kmp.setKeyStore(ksp);
    kmp.setKeyPassword("password");

    SSLContextParameters scp = new SSLContextParameters();
    scp.setKeyManagers(kmp);

    JettyHttpComponent jettyComponent = getContext().getComponent("jetty", JettyHttpComponent.class);
    jettyComponent.setSslContextParameters(scp);
}

请注意,钥匙串路径是相对于类本身的。 此配置在外部 tomcat 上完美运行,但在使用 maven 插件时 - 它会抛出 IOException,因为它找不到钥匙串文件。

如何以最佳方式相对定义路径?

谢谢

【问题讨论】:

    标签: java ssl apache-camel jetty relative-path


    【解决方案1】:

    我终于通过将密钥库作为资源读取来做到这一点。

    这是最终代码:

    KeyStoreParameters ksp = new KeyStoreParameters();
    
    URL res = getClass().getClassLoader().getResource("/ssl/keychain.p12");
    File file = Paths.get(res.toURI()).toFile();
    String keyChainPath = file.getAbsolutePath();
    
    ksp.setResource(keyChainPath);
    ksp.setType("PKCS12");
    ksp.setPassword("my_pass");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 2017-10-14
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多