6

我想运行仅使用 HTTPS (8443) 的嵌入式 tomcat。我根本不想使用 8080 端口。有什么想法吗?

    连接器 httpsConnector = new Connector();
    httpsConnector.setPort(httpsPort);
    httpsConnector.setSecure(true);
    httpsConnector.setScheme("https");
    httpsConnector.setAttribute("keystoreFile", appBase + "/.keystore");
    httpsConnector.setAttribute("clientAuth", "false");
    httpsConnector.setAttribute("sslProtocol", "TLS");
    httpsConnector.setAttribute("SSLEnabled", true);

    Tomcat tomcat = new Tomcat();
    tomcat.getService().addConnector(httpsConnector);
    tomcat.setPort(8080);
    连接器 defaultConnector = tomcat.getConnector();
    defaultConnector.setRedirectPort(8443);

    tomcat.setBaseDir(".");
    tomcat.getHost().setAppBase(appBase);

    StandardServer 服务器 = (StandardServer) tomcat.getServer();
    AprLifecycleListener listener = new AprLifecycleListener();
    server.addLifecycleListener(listener);

谢谢

4

3 回答 3

2

您必须删除 [tomcat-dir]/conf/server.xml 中定义的连接器,该连接器将其绑定到 8080,并为 HTTPS 提供单独的连接器。

于 2012-08-06T07:34:10.900 回答
0

我刚刚尝试使用问题中的代码段来创建httpsConnector它,效果很好!除了我必须添加一个缺失的行:

httpsConnector.setAttribute("keystorePass", "YOUR-PASSWORD-HERE");

将其设置为我在创建密钥库时设置的密码就可以keytool了。

谢谢!

于 2013-02-22T18:52:11.210 回答
0

从 Tomcat 实例获取 defaultConnector 并将其设置为 https。这样就没有其他连接器了:

    Connector defaultConnector = tomcat.getConnector();
    defaultConnector.setPort(8443);
    defaultConnector.setSecure(true);
    defaultConnector.setScheme("https");
    defaultConnector.setAttribute("keystorePass", "password");
    defaultConnector.setAttribute("keystoreFile", absolutePath + "/keystore.jks");
    defaultConnector.setAttribute("clientAuth",  "false");
    defaultConnector.setAttribute("sslProtocol",  "TLS");
    defaultConnector.setAttribute("SSLEnabled",  true);
于 2014-12-02T18:23:54.773 回答