1

我想强制所有用户对我的应用程序中的所有页面使用 SSL。我正在使用 mavan 3 并在 maven 中使用了这个插件:

        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0-SNAPSHOT</version>
            <configuration>
                <server>TomcatServer</server>
                <httpsPort>8443</httpsPort>
                <keystoreFile>-- My keystore path --</keystoreFile>
                <keystorePass>-- My keystore pass --</keystorePass>
                <path>/</path>
            </configuration>
        </plugin>

通过 maven (mvn tomcat7:run) 运行服务器时,我的服务器日志如下所示:

...
INFO: Initializing Spring root WebApplicationContext
Sep 16, 2012 9:55:17 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 16, 2012 9:55:17 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8443"]

但是,当我使用 https 访问该页面时,我在 chrome 中收到 SSL 连接错误,并且“SSL 收到了超出最大允许长度的记录”。在火狐中。

1)我相信maven在战争中嵌入了Tomcat 7。因此,没有可以手动配置 SSL 的 server.xml 文件。如何在我的 pom.xml 中配置 SSL?

2) 如何确保所有请求都转发到 8443?

4

3 回答 3

3

I have a feeling that the "server" attribute may be causing your problem. According to the Tomcat plug-in documentation that is not an option. Here is a (very hard-to-find) list of the plug-in options for the Tomcat 'run' command. http://mojo.codehaus.org/tomcat-maven-plugin/run-mojo.html Good luck. I had a similar problem, although not the same. I hope this works for you.

于 2012-10-31T19:43:24.073 回答
0

这是您应该为 Tomcat 7 配置 SSL 的方式:http: //tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

然后,您需要将 server.xml 添加到这个嵌入式 Tomcat,由插件启动:http: //tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/tomcat7-maven-plugin/run-mojo.html#serverXml

然后,从 8080 到 8443 的转发应该由您的应用程序在内部完成,可能在 servlet 侦听器中]。另请参阅:如何在 Web 应用程序中实现 HTTPS 登录页面?

于 2012-09-16T17:45:20.393 回答
0

我遇到了同样的问题,所以我单独托管了 Tomcat,然后server.xml通过使用 JDK keytool 生成 jks 文件来配置 ssl 证书。因此,所有应用程序都可以通过安全的 https 链接托管在同一个 tomcat 中。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="1500" SSLEnabled="true" scheme="https" secure="true" keystoreFile="C:\apache-tomcat-8\conf\filename.jks" keystorePass="password"
clientAuth="false" sslProtocol="TLS" > 
</Connector>

将上述代码添加到server.xml文件中,并将端口从 8443 转发到 443。

于 2021-06-12T14:08:37.543 回答