【问题标题】:Embedded Jetty with client certificates带有客户端证书的嵌入式 Jetty
【发布时间】:2014-09-02 08:39:18
【问题描述】:

我想创建需要客户端提供证书的嵌入式 https 服务器,我正在使用这个: http://www.smartjava.org/content/embedded-jetty-client-certificates

现在我的问题是,鉴于我的码头已嵌入,我如何为我的代码提供密钥库和信任库文件。 我的意思是代码中的这些行:

// the keystore (with one key) we'll use to make the connection with the
    // broker
    private final static String KEYSTORE_LOCATION = "src/main/resources/client_keystore.jks";
    private final static String KEYSTORE_PASS = "secret";

    // the truststore we use for our server. This keystore should contain all the keys
    // that are allowed to make a connection to the server
    private final static String TRUSTSTORE_LOCATION = "src/main/resources/truststore.jks";
    private final static String TRUSTSTORE_PASS = "secret";

谢谢

【问题讨论】:

    标签: java jetty embedded-jetty


    【解决方案1】:

    github.com/eclipse/jetty.project 上有大量 Jetty 嵌入式使用示例

    示例:LikeJettyXml.java - Jetty 8,未使用 XML,设置 SSL 连接器。

        SslSelectChannelConnector ssl_connector = new SslSelectChannelConnector();
        ssl_connector.setPort(8443);
        SslContextFactory cf = ssl_connector.getSslContextFactory();
        cf.setKeyStorePath(jetty_home + "/etc/keystore");
        cf.setKeyStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
        cf.setKeyManagerPassword("OBF:1u2u1wml1z7s1z7a1wnl1u2g");
        cf.setTrustStore(jetty_home + "/etc/keystore");
        cf.setTrustStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
        cf.setExcludeCipherSuites(
                new String[] {
                    "SSL_RSA_WITH_DES_CBC_SHA",
                    "SSL_DHE_RSA_WITH_DES_CBC_SHA",
                    "SSL_DHE_DSS_WITH_DES_CBC_SHA",
                    "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
                    "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
                    "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
                    "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"
                });
        ssl_connector.setStatsOn(false);
        server.addConnector(ssl_connector);
        ssl_connector.open();
    
        SslSocketConnector ssl2_connector = new SslSocketConnector(cf);
        ssl2_connector.setPort(8444);
        ssl2_connector.setStatsOn(false);
        server.addConnector(ssl2_connector);
        ssl2_connector.open();
    

    【讨论】:

    • 谢谢!实际上我的问题是我真的需要生成一些密钥吗?实际上我对 ssl 和 https 完全是初学者。
    • 您好,我的问题是应用这些更改后会发生什么?当我用 https 传递 url 时,应该打开 url 吗?实际上我对此很初学者,我不知道会有什么变化? ——
    • 需要密钥库和您的证书。它们可以是自签名的,也可以通过注册的 CA(证书颁发机构)购买。但无论哪种方式,SSL / TLS(和 NPN / SPDY / HTTP2)都需要它们
    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 2013-02-25
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2013-03-13
    • 2013-04-27
    相关资源
    最近更新 更多