我们想要通过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.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)
增加了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
找标签
在标签下添加如下信息
CLIENT-CERT
Client Cert Users-only Area
SSL
/*
CONFIDENTIAL
保存后用默认的http访问你的web项目 就会自动跳转用https访问
比如访问在浏览器中输入http://localhost:8080 会自动跳转到 https://localhost:8443/
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.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来访问项目