一尘不染

Tomcat中特定页面/ URL模式的SSL

tomcat

我最近使用SSL和客户端身份验证配置了tomcat
6,但是我唯一的方法是修改服务器配置文件(web.xml,server.xml)。但是由于我无法完全控制部署服务器,因此我只想为应用程序的某些页面或url模式配置所有内容,而无需修改主配置文件。

例如:主服务器:

  • 应用程序1-> HTTP
  • 应用程序2-> HTTP
  • MyApplication-> HTTPS

如果有人知道该怎么做,请告诉我。


阅读 250

收藏
2020-06-16

共1个答案

一尘不染

使https生效的唯一方法是server.xml<service>标记下的文件上写入适当的连接器。设置连接器后,您可以使用http或https访问服务器中的所有应用程序。唯一的区别是使用了哪种连接器。通常,http和https的连接器如下所示:

<Connector port="80" protocol="HTTP/1.1"
           maxThreads="150" connectionTimeout="20000"
           redirectPort="443"
           URIEncoding="UTF-8" compression="on"/>

<Connector port="443" protocol="HTTP/1.1"
           maxThreads="150" connectionTimeout="20000"
           SSLEnabled="true" scheme="https" secure="true"
           keystoreFile="conf/.keystore"
           keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"
           URIEncoding="UTF-8" compression="on"/>

然后,您可以通过添加transport-guarantee标记来强制您的应用程序始终使用https,而该标记web.xml最终会是这样的:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Administrators</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Administrators</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

您可以transport-guarantee为定义的不同Web资源更改。因此,您可以保护站点的某些部分,而不能保护其他部分。

最后,插入连接器server.xml并不会强制您在所有应用程序中使用https。它仅允许使用https连接器。

2020-06-16