我已将我的 restlet 服务器配置为在码头 http 服务器上使用 https。配置非常简单:
boolean https = c.getBoolean(CfgKeyNames.HTTPS, true);
Protocol protocol = https ? Protocol.HTTPS : Protocol.HTTP;
Component component = new Component();
ServerList servers = component.getServers();
for (Integer port : ports) {
Server server = servers.add(protocol, port);
if (https) {
Series<Parameter> parameters = server.getContext().getParameters();
parameters.add("sslContextFactory", PkixSslContextFactory.class.getName());
parameters.add("keystorePath", Utils.getAbsolutePath(c, CfgKeyNames.KEYSTORE_PATH, "conf", "keystore.jks"));
parameters.add("keystorePassword", c.getProperty(CfgKeyNames.KEYSTORE_PASSWORD));
parameters.add("keyPassword", c.getProperty(CfgKeyNames.KEY_PASSWORD));
parameters.add("keystoreType", c.getProperty(CfgKeyNames.KEYSTORE_TYPE, "jks"));
}
}
它工作正常。除了发送 http 请求时,它根本不返回任何内容。运行 fiddler 报告以下响应:
HTTP/1.0 200 This buggy server did not return headers
(响应由 Fiddler 生成。)
无论如何,我该如何解决这个问题?
谢谢。
附言
我正在使用 Restlet 2.0.14(它带有 Jetty 7.1)
编辑
我已经使用 WireShark 捕获了流量。此处提供完整的文本转储 - http://pastebin.com/Yw80qvcT
我使用的过滤器是tcp.port == 11111 && ip.addr == 184.73.151.24
服务器在亚马逊云中的 AWS 机器上运行的端口 11111。
编辑2
这是二进制捕获文件 - http://dl.dropbox.com/u/30319655/gl.pcap 这次端口是 443。