关于tomcat下设置HTTP访问和HTTPS访问的注意点

本文介绍了在Tomcat 8.5版本中如何设置HTTP和HTTPS访问,强调了配置过程中的注意事项,包括端口设置、安全传输级别等。默认HTTP使用8080端口,可以通过修改server.xml文件进行调整。文章提醒读者,对于传输保证的选择,如NONE、INTEGRAL和CONFIDENTIAL,会影响数据的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文提到的tomcat版本为8.5。

文中如果错误之处,欢迎指正。

tomcat默认使用8080端口的HTTP协议访问服务器上的项目,可以直接访问conf文件夹下的server.xml文件查询相关设置,如果只是查询的话,建议直接用浏览器打开,结构清晰明显,如果想要修改的话,建议用文本编辑器打开。

默认8080端口设置如下:

<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>

这里的redirectPort声明重定向端口,在网上查阅相关资料得知8443端口是tomcat打开SSL的文本服务的默认端口,即用于HTTPS访问的端口,但是在默认设置下,server.xml里并没有8443端口相关的设置,顶多能看到被注释掉的示例设置:

示例1:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

示例2:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>


Certificate是与SSL证书相关的配置,本人使用的tomcat并没有自带上述示例中配置的证书文件。

相关访问设置的问题不是本文的重点,网上多得是,所以就不描述了,下面来说一下设置的注意点

1.

如果只需要HTTP访问,只用修改conf文件夹下的server.xml即可,一般来说就两个地方需要设置,一个是访问端口(<Connector>),一个则是访问域名(<Host>),具体就不赘述了。

2.

如果需要HTTPS访问,按以下方式进行设置:

1)

添加用于HTTPS访问的端口,https默认访问端口是443,所以基本上按以下设置即可,keystoreFile填写的是SSL证书的路径,一般将获取的SSL证书存放在conf文件夹下即可:
 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="conf/xxx.jks"
    keystorePass="si80392afmcwu9"
    clientAuth="false" sslProtocol="TLS" />

2)

在HTTP访问设置中加上重定向端口(redirectPort),并设置为HTTPS访问的端口,当你想访问网站无需输入端口号时,只需将访问端口设置为80即可,如下:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443"/>

3)

这一步是HTTPS设置比较重要的地方,需要考虑到网站是需要同时兼容HTTP和HTTPS访问还是全都强制转为HTTPS访问,这里就需要设置conf文件夹下的web.xml了:
<login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
    <!-- Authorization setting for SSL -->
  <web-resource-collection>
    <web-resource-name>SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint> 

CLIENT-CERT认证一种基于客户端证书的认证方式,比较安全。但缺陷是在没有安全证书的客户端无法使用。

security-constraint元素是一种计算机函数,允许不通过编程就可以限制对某个资源的访问,在大多数情况下,安全套接字层(SSL)用于INTEGRAL或CONFIDENTIAL,标识需要限制访问的资源子集。

web-resource-collection元素标识需要限制访问的资源子集。在web-resource-collection元素中,可以定义URL模式和HTTP方法。如果不存在HTTP方法,就将安全约束应用于所有的方法。

web-resource-name是与受保护资源相关联的名称。http-method元素可被赋予一个HTTP方法,比如GET和POST。

url-pattern是将安全约束用在设定的匹配URL上。

auth-constraint元素用于指定可以访问该资源集合的用户角色。如果没有指定auth-constraint元素,就将安全约束应用于所有角色。

user-data-constraint元素用来显示怎样保护在客户端和Web容器之间传递的数据。

transport-guarantee元素必须具有如下的某个值:
  1. NONE,这意味着应用不需要传输保证。
  2. INTEGRAL,意味着服务器和客户端之间的数据必须以某种方式发送,而且在传送中不能改变。
  3. CONFIDENTIAL,这意味着传输的数据必须是加密的数据。
一般来说,如果需要同时兼容HTTP与HTTPS访问的话,在web.xml里不设置以上内容即可,但是如果需要强制转换的话,按上面的示例设置即可。

参考链接:
1. Tomcat提供的安全机制:http://blog.youkuaiyun.com/doupei2006/article/details/11602247
2.web.xml中<security-constraint>和四种认证类型:http://blog.youkuaiyun.com/lisheng19870305/article/details/40819481
3.security-constraint元素:http://www.baike.com/wiki/security-constraint%E5%85%83%E7%B4%A0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值