Tomcat配置Https

本文介绍如何使用JDK自带工具keytool生成SSL证书,并详细讲解如何配置Tomcat的server.xml文件来启用HTTPS服务。此外,还提供了使HTTP请求自动转向HTTPS的方法。

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

前言

本文档主要是总结通过配置tomcat后,实现由原来的http访问改为https的访问方式

本文档使用到的环境

  • jdk1.7.0
  • tomcat7.0.64

开始着手配置

先通过jdk自带的keytool工具生成证书

先win+R打开cmd窗口,然后执行命令

keytool -genkey -alias tomcat -keyalg RSA -keystore E:\sslkey\tomcat.keystore -validity 36500

参数说明:

  • -alias:别名
  • -keyalg RSA:算法
  • -keystore:指定生成证书的位置和证书名称
  • -validity:有效期,天单位,默认值是90天

执行命令之后会提示输入一些问题

说明:

  • 输入keystore密码:此处需要输入大于6个字符的字符串
  • “您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址
  • “你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国 家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息
  • 输入的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以

完成上面的输入之后就会在指定的目录位置生成一个tomcat.keystore自签的证书文件了。

啥是自签的证书文件?

就是自己生成的证书,并不是官方生成的证书,除非是很正式的项目,否则使用自己签发的证书即可,因为官方生成证书是要花钱滴。

配置Tomcat服务器

找到并打开Tomcat下的conf/server.xml文件,在配置文件中的Service节点下增加多一个Connector

<Connector port="18443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
       enableLookups="false"
       acceptCount="100" disableUploadTimeout="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS"
       keystoreFile="D:/sslkey/tomcat.keystore"
       keystorePass="111111"
       />

说明:

  • port:这里默认的话是8443,我这里改成18443也可以
  • clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
  • keystoreFile:服务器证书文件路径,这里也可以是相对路径,如果把生成的tomcat.keysore文件拷贝到Tomcat容器的conf目录下,这里就可以写成 conf/tomcat.keystore
  • keystorePass:服务器证书密码

这样配置完之后启动tomcat,再到浏览器中通过 https://localhost:18443/app 请求就可以访问成功了!

可能遇到的问题:

我当时按网上的步骤配置完server.xml之后启动tomcat时报了一个错

Connector attribute SSLCertificateFile must be defined when using SSL with APR

当时tomcat是这样配置的

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" keystoreFile="D:/sslkey/tomcat.keystore" keystorePass="111111"/>

后来改成

<Connector port="18443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
       enableLookups="false"
       acceptCount="100" disableUploadTimeout="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS"
       keystoreFile="D:/sslkey/tomcat.keystore"
       keystorePass="111111"
       />

修改的地方就是把protocol="HTTP/1.1"改成protocol="org.apache.coyote.http11.Http11Protocol"

原因好像是他们用的是tomcat6,而我用的是tomcat7

http访问自动转成https访问

如果想把http请求都能够自动的编程https请求的话,可以做下面的配置

配置web.xml

打开tomcat下的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>

这样配置完之后,在浏览其中输入http的请求都会转成https的方式

小结

配置tomcat http访问改成https主要是三个步骤:

  • 利用jdk自带的keytool生成证书
  • 配置tomcat的server.xml
  • 如果想http自动编程https,就再配置一下tomcat的web.xml

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值