【发布时间】:2021-03-05 21:21:40
【问题描述】:
我正在使用来自here 的示例码头嵌入式项目之一
我添加了一个 SelectChannelConnect、SslSelectChannelConnect 和 SslSocketConnector,如上面的链接所示。 这是我的代码中的一个 sn-p:
// Create the server
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(80);
connector.setMaxIdleTime(30000);
connector.setConfidentialPort(8443);
connector.setStatsOn(false);
connector.setAcceptors(4);
server.setConnectors(new Connector[]
{ connector });
SslSelectChannelConnector ssl_connector = new SslSelectChannelConnector();
ssl_connector.setPort(443);
SslContextFactory cf = ssl_connector.getSslContextFactory();
cf.setKeyStorePath("/path/to/keystore");
cf.setKeyStorePassword("password");
cf.setKeyManagerPassword("password");
cf.setTrustStore("/path/to/keystore");
cf.setTrustStorePassword("password");
cf.setExcludeCipherSuites(
"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(443);
ssl2_connector.setStatsOn(false);
server.addConnector(ssl2_connector);
ssl2_connector.open();
server.start()
HTTP 工作正常,但我无法让它在 HTTPS 上工作。它在浏览器中给了我一个关于不受信任的证书等等的初步警告。我添加了一个例外,但随后它显示此消息:“这可能是因为该站点使用了过时或不安全的 TLS 安全设置。如果这种情况持续发生,请尝试联系该网站的所有者。”在 IE 上。我在 IE 上的设置没问题,选中 TLS 1.0、1.1 和 1.2,未选中 SSL 3.0。
我错过了什么吗?我相信我遵循了示例项目中的所有内容。
我还生成了密钥库并从 jdk SE 6u45 构建了项目。我认为密钥库文件没有任何问题,因为它可以在另一个应用程序中完美运行。
【问题讨论】:
-
在服务器端使用 SSL/TLS,您需要使您的 JVM 保持最新。您使用的配置早在 2014 年就有效,而现在,在 2021 年,同样的配置实际上很容易受到攻击,大多数浏览器不再支持。
-
Jetty 8.x 早在 2014 年就被设置为 EOL(生命终止)。考虑升级 - eclipse.org/jetty/download.php
-
感谢您的反馈。不幸的是,我并不奢侈地升级 jetty 或 java。我将在其中使用的应用程序也将在本地运行。我可以让它与旧版本的浏览器一起使用吗?
-
你需要一个非常旧的浏览器,2013-2014 年左右发布的浏览器应该可以。
-
请注意,如果您将浏览器降级,则只有您的浏览器才能访问该网站,其他用户、防火墙、负载均衡器或 http 客户端等都无法访问...
标签: java ssl https embedded-jetty