【问题标题】:Embedded Tomcat enable SSL嵌入式 Tomcat 启用 SSL
【发布时间】:2015-09-11 01:55:38
【问题描述】:

我正在尝试为嵌入式 Tomcat 设置 SSL。两个连接器都启动,但我只在 http 上得到响应。在 https 上,当我尝试 http://localhost:9000/ 时,我在 chrome 中收到“未收到数据消息” 端口开放: 我试过远程登录 telnet localhost 9000 我有一个联系。 我也试过 openssl s_client -connect localhost:9000 和 GET / 方法 我的 servlet 在控制台中打印我的预期结果。我不明白为什么在浏览器(chrome 和 Firefox)中出现此错误 我的操作系统是 Ubuntu 14.04,我尝试过使用 Java 7 和 Java 8,结果相同。来自 Maven 存储库的 Tomcat 版本是 8.0.23 代码是:

public class Main {

public static void main(String[] args) throws Exception {
    Tomcat tomcat = new Tomcat();
    Service service = tomcat.getService();
    service.addConnector(getSslConnector());


    File base = new File(System.getProperty("java.io.tmpdir"));
    Context rootCtx = tomcat.addContext("/", base.getAbsolutePath());
    Tomcat.addServlet(rootCtx, "emptyServlet", new EmptyServlet());
    rootCtx.addServletMapping("/*", "emptyServlet");
    tomcat.start();
    tomcat.getServer().await();

}

private static Connector getSslConnector() {
    Connector connector = new Connector();
    connector.setPort(9000);
    connector.setSecure(true);
    connector.setScheme("https");
    connector.setAttribute("keyAlias", "tomcat");
    connector.setAttribute("keystorePass", "password");
    connector.setAttribute("keystoreType", "JKS");
    connector.setAttribute("keystoreFile",
            "keystore.jks");
    connector.setAttribute("clientAuth", "false");
    connector.setAttribute("protocol", "HTTP/1.1");
    connector.setAttribute("sslProtocol", "TLS");
    connector.setAttribute("maxThreads", "200");
    connector.setAttribute("protocol", "org.apache.coyote.http11.Http11AprProtocol");
    connector.setAttribute("SSLEnabled", true);
    return connector;
 }
}

您可以在github 上找到它的密钥库

我已经尝试过不同的密钥库,但结果相同。密钥库看起来也不错:keytool -list -keystore keystore.jks 似乎符合预期。 提前致谢

【问题讨论】:

  • IIUC:你有某种 Java 程序。因此,请添加更多信息、有问题的代码以及有关失败/预期结果的详细信息。
  • 代码在github上。描述中提供了一个链接。如果必须的话,我也可以在这里粘贴。我希望 HTTPS 将像在常规 Tomcat 上一样在嵌入式 Tomcat 上启用,但浏览器无法呈现输出。
  • 你应该在这里发布一些信息。 IOW:MCVE.
  • 您的代码解决了我的问题。非常感谢

标签: java tomcat ssl https


【解决方案1】:

原来是我的错。该服务已启动并正在运行,但我继续在浏览器中尝试http://localhost:9000 而不是https://locahost:9000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 2023-03-09
    • 2019-11-15
    • 2013-02-24
    相关资源
    最近更新 更多