首页 文章

嵌入Tomcat-7仅在https中运行

提问于
浏览
6

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

Connector 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);
    Connector defaultConnector = tomcat.getConnector();
    defaultConnector.setRedirectPort(8443);

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

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

谢谢

3 回答

  • 2

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

  • 0

    我只是尝试使用问题中的片段来创建 httpsConnector 并且效果很好!除了我必须添加一个缺失的行:

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

    creating the keystorekeytool 设置为我设置的密码 .

    谢谢!

  • 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);
    

相关问题