Tomcat http改成使用https协议(SSL证书)

 

我们想要通过https访问程序,首先需要获得一个数字证书,自己给自己签发而来的证书也叫自签名ssl证书,这种类型的证书可以随意签发,不受任何约束和监督,也不受各大浏览器的信任,基本没什么安全性可言,所以https证书获取不建议使用这种。

而由受信任的CA机构签发的https证书,才是用户们正确的选择。这种CA机构签发证书需要经过一系列的审核,而且是有有效期的,一般不超过2年,能兼容市面上大部分的浏览器,也就是受各大浏览器的信任,安全性有保障。目前比较受欢迎的几大国际品牌有Symantec、Geotrust、Comodo、Thawte以及RapidSSL等。想要获取靠谱的https证书可以从他们当中选择一款。

我们这里使用JDK自带keytool工具,来创建本地SSL证书。

 

目录

1 Window 10中Tomcat使用Https请求

2 Linux中Tomcat使用Https请求

3 Spring boot 内置Tomcat使用Https请求


 

1 Window 10中Tomcat使用Https请求

1.1 jdk中找到keytool.exe

进入到jdk的安装目录,也就是环境变量中配置%JAVA_HOME%/bin的目录下,在bin目录下按住shift+右键,打开Powershell窗口

 

1.2在打开的dos窗口中,输入以下命令:

以下命令将生产一对非对称密钥和自我签名的证书

keytool -genkey -v -alias keystoreKey -keyalg RSA -validity 3650 -keystore E:\tomcat\apache-tomcat-8.0.53\conf\tomcat.keystore

keytool -genkey:自动使用默认的算法生成公钥和私钥

-alias 名称 :给证书取个别名,这里设置的是keystoreKey

-keyalg:制定密钥的算法,如果需要制定密钥的长度,可以再加上keysize参数,密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍

-validity:证书的有效日期,默认是90天,这里设置的3650天

-keystore:参数可以指定密钥库的名称,密钥库其实是存放秘钥和证书文件,会将生成的证书存放到指定的目录下。

 

1.3 输入证书信息

注意:域名以tomcat地址为例

在核对信息的时候,如果直接Enter,或者输入其它,会重新开始录入信息

keystore指定证书存放目录必须存在,否则报系统找不到错误

进入到tomcat\conf目录下,发现证书已经存在

 

1.4 修改tomcat配置信息

打开tomcat的目录下conf/server.xml 文件

 
 

找到以下代码段

将注释去掉后修改代码如下: 这里Https端口设置的是8443(https 访问默认是443端口, HTTP 访问默认是80)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="E:\tomcat\apache-tomcat-8.0.53\conf\tomcat.keystore"  keystorePass="123456" />

 

增加了keystoreFile 和 keystorePass 两个参数

keystoreFile :表示证书文件的放置位置

keystorePass :证书密钥库设置的密码

注意:redirectPort 端口号和port端口号可以自定义,端口号必须相同

 

1.5 验证https

进入到tomcat\bin目录下启动tomcat

http:启动成功后在浏览器中输入http://localhost:8080

 

Https:tomcat配置的端口为8443,在浏览器中输入https://localhost:8443/

点击高级->继续前往localhost(不安全)进入到tomcat

在谷歌浏览器查看证书信息

点击不安全->选择证书

可以看到我们配置的证书信息,以及有效期

 

 

1.6将HTTP访问跳转到HTTPS访问

打开tomcat\conf目录,找到web.xml

找</welcome-file-list>标签

在</welcome-file-list>标签下添加如下信息

<!--强制使用https,http请求会自动转为https -->
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<!--配置网站支持https,/* 表示全部请求都走https, transport-guarantee 标签设置为 CONFIDENTIAL以便使应用支持 SSL。 如果需要关闭 SSL ,将 CONFIDENTIAL 改为 NONE 即可 -->
<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>

 

保存后用默认的http访问你的web项目 就会自动跳转用https访问

比如访问在浏览器中输入http://localhost:8080 会自动跳转到 https://localhost:8443/

 

2 Linux中Tomcat使用Https请求

Linux中配置Tomcat和 Window 中是一样的,可以直接按照window步骤操作

务必使用root用户连接到虚拟机后,进入到jdk安装目录bin目录下,直接使用命令来生成SSL证书,唯一的区别是在安装证书的过程中,可能语言不同(具体依虚拟机使用语言为准)例:

需要注意的是linux和window路径的不同,例:

keytool -genkey -v -alias keystoreKey -keyalg RSA -validity 3650 -keystore /tomcat/apache-tomcat-8.0.53/conf/tomcat.keystore

配置完成后别忘记在虚拟器中开启Https端口号

 

3 Spring boot 内置Tomcat使用Https请求

3.1 使用JDK自带keytool工具,创建本地SSL证书,生成方法参考Window 10 步骤

 

3.2 将生成的tomcat.keystore文件拷贝到springboot项目根目录下,和pom.xml同级

 

3.3 修改application.properties文件,添加一下信息

#http端口号 / spring boot 默认端口号8080
#server.port=8081

#https端口号
server.port=8443

#https证书信息
#设定持有SSL certificate的key store的路径
server.ssl.key-store=tomcat.keystore
#访问key store中key的密码.
server.ssl.key-store-password=123456
#设定key store的类型.
server.ssl.key-store-type=JKS
#设定key store中key的别名
server.ssl.key-alias=keystoreKey

 

3.4 启动服务以后,https通过访问 https://localhost:8443来访问项目

 

  • 4
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值