Tomcat10 HTTPS配置避雷

在给Tomcat10配置https协议时,照着网上的资料一遍遍修改配置文件,都没起作用......

后来去tomcat的官网上查看了Tomcat10的"SSL/TLS Configuration How-To"这篇文章,成功避雷,完成了https协议的配置,附成功截图:


开始正文:

Tomcat配置HTTPS协议主要有三个步骤:

  1. 申请证书及配置
  2. 配置server.xml
  3. 配置web.xml

1.申请证书及配置

证书我用的是在阿里云申请的免费证书,申请的教程网上有好多,就不一一赘述了。

我申请的是jks类型的证书,这是Java格式的证书,常用于tomcat服务器

证书申请下来后,我们下载完成后,在服务器的tomcat根目录下创建一个cert文件夹,把下载下来的证书名称.jksjks-password.txt上传到这个目录

2.配置server.xml

首先,修改tomcat的端口8080为80,8443端口为443,修改后的文件配置为下:

    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />

然后,我们要把87行附近的Connector这个标签取消注释,现在就到了最坑的地方

网上的教程,大多数都把这里的配置改为类似于下面这种:

<Connector port="443"
    protocol="org.apache.coyote.http11.Http11Protocol"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="/xxx/tomcat/cert/restlessman.cn.jks"
    keystoreType="PKCS12"
    keystorePass="xxxxx"
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>

结果折腾了两小时,迟迟不能访问到tomcat页面。后来去tomcat官方网站,官网给出的建议是(文章链接 https://tomcat.apache.org/tomcat-10.0-doc/ssl-howto.html):

原先根据大部分教程修改的配置(错误的❌):

<Connector port="443"
    protocol="HTTP/1.1"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="/usr/tomcat/apache-tomcat-10.0.5/cert/xxxx.jks"
    keystorePass="ocSCy8ut"
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256">
        <SSLHostConfig>
		<Certificate certificateKeystoreFile="/usr/tomcat/apache-tomcat-10.0.5/cert/xxxx.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

更具Tomcat官网给出的办法修改后的配置(正确的√):

<Connector
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    port="443"
    maxThreads="150"
    SSLEnabled="true">
  <SSLHostConfig>
    <Certificate
      certificateKeystoreFile="/usr/tomcat/apache-tomcat-10.0.5/cert/xxxxx.jks"
      certificateKeystorePassword="ocSCy8ut"
      type="RSA"
      />
    </SSLHostConfig>
</Connector>

3.web.xml配置

web.xml主要是添加配置,使任何访问本网站的请求都重定向为https协议

在web.xml最后的<welcome-file-list>标签后面添加下列内容,即可完成重定向的配置:

<security-constraint>
    <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>

重启tomcat服务后,访问你的网站,即可看到http被重定向到了https。

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
配置Tomcat 10以支持HTTPS,需要执行以下步骤: 1. 生成自签名证书或购买SSL证书:要启用HTTPS,您需要一个有效的证书。您可以自己生成自签名证书,或者购买来自受信任的证书颁发机构(CA)的SSL证书。 2. 配置Tomcat的server.xml文件:打开Tomcat的conf目录下的server.xml文件,并找到以下行: ``` <!-- Define a SSL HTTP/1.1 Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="path/to/your/keystore/file" keystorePass="your_keystore_password" clientAuth="false" sslProtocol="TLS" /> ``` 确保将 `keystoreFile` 的值设置为您的证书文件的路径,将 `keystorePass` 的值设置为您的证书密码。 3. 配置Tomcat的web.xml文件:找到您要启用HTTPS的应用程序的web.xml文件,并将以下代码添加到 `<web-app>` 标签内: ``` <security-constraint> <web-resource-collection> <web-resource-name>Secure pages</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> ``` 这个配置将强制所有URL使用HTTPS。 4. 启动Tomcat并测试:启动Tomcat服务器,并使用HTTPS访问您的应用程序,URL应该以https://开头。 请确保按照适用于您的操作系统和Tomcat版本的具体步骤进行配置。如果您使用的是不同的版本或发行版,请查阅相关的官方文档以获取更详细的指导。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值