【问题标题】:Using embedded Jetty 9 with HTTPS only仅通过 HTTPS 使用嵌入式 Jetty 9
【发布时间】:2016-12-16 04:52:03
【问题描述】:

我正在使用嵌入式 Jetty 9,我想允许 https 访问,但不允许 http。

我知道我可以轻松地在 Jetty web.xml 中配置重定向,但我在嵌入式版本中没有该文件。我知道我可以使用任何文件并从嵌入式版本中指向它,但这应该更容易。

所以我在这里搜索并找到了这个http://blog.anvard.org/articles/2013/10/05/jetty-ssl-server.html,作者说“当然,我们可以通过移除 HTTP 连接器来强制使用 HTTP/S。”

所以我就是这样做的:

    Server server = new Server();

    SslContextFactory sslContextFactory = new SslContextFactory();
    sslContextFactory.setKeyStorePath(keystoreFile.getAbsolutePath());
    sslContextFactory.setKeyStorePassword(Keys.DOMAIN_CERTIFICATE_JKS_KEYSTORE_PASSWORD);
    sslContextFactory.setKeyManagerPassword(Keys.DOMAIN_CERTIFICATE_KEY_MANAGER_PASSWORD);

    HttpConfiguration httpsConfiguration = new HttpConfiguration();
    SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer();
    httpsConfiguration.addCustomizer(secureRequestCustomizer);

    ServerConnector serverConnector = new ServerConnector(server,
            new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
            new HttpConnectionFactory(httpsConfiguration));
    serverConnector.setHost("192.168.0.5");
    serverConnector.setPort(9443);
    serverConnector.setIdleTimeout(15000);

    server.setConnectors(new Connector[] { serverConnector });

问题:它似乎不起作用。 https 工作正常,但是当我访问 http 时,我得到 200 OK 响应,正文中有垃圾(而不是预期的 json 响应)。所以服务器似乎处理了请求,但是加密错误,无论如何。还是我忽略了什么,我的配置不好?

--

【问题讨论】:

  • 当你说“我访问 http”时,这是否意味着你在 9443 上使用明文 http?
  • 是的。我在浏览器中输入了http://... 并收到了一些加密的东西。没有重定向到非http端口时正常吗?
  • http://xxxxx:9443吗?因为这完全可以预期会收到加密握手或不支持明文的通知。
  • 是的,它是http://xxxxx:9443。我想这是我收到的握手,但想确定一下。 [@JohnnyV 感谢您的回答,如果您想将此作为答案发布,以便获得积分:) ]
  • 你能粘贴整个请求/响应吗?您收到 200 OK 回复的事实很奇怪,因为实际上所有内容都应该加密。在我让你认为这是一回事之前,我想仔细检查一下。

标签: java embedded-jetty


【解决方案1】:

据我所知,您所做的一切都是正确的。连接到 SSL 端口并发送常规 HTTP(没有 SSL 握手)将返回 SSL 警报消息。尽管甚至没有收到 HTTP 响应,但您的 HTTP 客户端(出于某种原因)仍向您提供 200 OK 消息。

您收到的是 SSL 警报消息。

15 03 03 00 02 02 50 // response

15 = ALERT
03 03 = SSL version (TLS 1.x)
00 02 = Message Length
02 50 = Message

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-27
    • 2014-09-22
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    相关资源
    最近更新 更多