当请求http时,Restlet + jetty + https返回格式错误的响应

时间:2012-08-20 20:05:14

标签: java http https jetty restlet

我已将我的restlet服务器配置为在jetty 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生成。)

无论如何,我该如何解决这个问题?

感谢。

P.S。

我使用的是Restlet 2.0.14(它带有Jetty 7.1)

修改

我使用WireShark捕获了流量。完整的转储文本可在此处获取 - http://pastebin.com/Yw80qvcT

我使用的过滤器是tcp.port == 11111 && ip.addr == 184.73.151.24,其中服务器在端口11111上的亚马逊云中的AWS计算机上运行。

EDIT2

这是二进制捕获文件 - http://dl.dropbox.com/u/30319655/gl.pcap 这次港口是443。

0 个答案:

没有答案