首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只使用HTTPS的嵌入式Jetty 9

只使用HTTPS的嵌入式Jetty 9
EN

Stack Overflow用户
提问于 2016-08-10 00:58:48
回答 1查看 1.2K关注 0票数 0

我使用的是嵌入式Jetty 9,在这里我希望允许https访问,但不允许使用http。

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

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

所以我就是这么做的:

代码语言:javascript
运行
复制
    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响应)。因此,服务器似乎处理请求,但加密错误,无论如何。还是我忽略了什么,我的配置是不好的?

--

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-14 23:27:26

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

您正在接收的是SSL警报消息。

代码语言:javascript
运行
复制
15 03 03 00 02 02 50 // response

15 = ALERT
03 03 = SSL version (TLS 1.x)
00 02 = Message Length
02 50 = Message
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38862650

复制
相关文章

相似问题

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