SpringBoot使用SSL证书加密API(HTTPS)
Posted pcdd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot使用SSL证书加密API(HTTPS)相关的知识,希望对你有一定的参考价值。
文章目录
1.申请证书(腾讯云)
申请免费的SSL证书,腾讯云,填写相关信息即可,如绑定的域名、邮箱、备注名
2.下载证书
大约等10分钟就有结果了,在申请成功的证书列表点击下载
下载完成后,目录结构如下,因为SpringBoot内置的是Tomcat,所以就选Tomcat,其余的用不到
3.把证书放在resources目录下
打开Tomcat,有两个文件,将.jks结尾的拷贝到springboot项目的resource目录下
4.编写springboot配置文件
编写配置文件,和你的文件名保持一致,key-store-password就是keystorePass.txt中的内容,只配置3项就可以生效了,无需编写配置类
server:
# 配置接口为https,部署后方可生效,本地不会显示
ssl:
key-store: classpath:域名.jks
key-store-password: ***********
key-store-type: JKS
参数说明:
key-store:证书文件的完整路径名
key-store-password:指定了私钥,即keystorePass.txt中的内容。
KeyStoreType:指定证书文件的类型,jks证书文件的类型即是JKS。
5.查看结果
本地启动项目。我的端口为8181,效果如下
这里是http访问的,改为https的效果如下
返回的json数据是我对404进行了捕获,无需在意,出现上面的结果是正常的,因为我们申请的证书域名的ip肯定不是localhost,浏览器会认为证书是无效的,只有部署到和证书域名一样的服务器上才会生效,若申请证书绑定的域名和你部署到的服务器的域名不一致,即使部署到线上证书仍然不被浏览器所认可。
例如服务器的域名为abc.com,证书绑定的域名也应为abc.com而不是三级域名xxx.abc.com
项目package后生成jar包,我是用的是docker部署,不使用docker也可以,可以使用java -jar命令,总之让项目在服务器上跑起来就行
有关docker的文章可以参考:https://blog.csdn.net/weixin_43553153/category_10874280.html
部署成功后访问 https://你的域名:你项目的端口号,docker端口映射为8181:8085
结果如下
发现chrome浏览器的地址栏有一个小锁,说明https生效了。
6.本地运行使HTTPS生效的方法
修改hosts文件即可。(推荐使用SwitchHosts工具修改)
将127.0.0.1映射到申请证书的域名,例如lyunion.top
127.0.0.1 lyunion.top
然后在浏览器访问地址:https://lyunion.top:8181/api地址,就可以发现https也生效了
此时并没有在服务器上部署,是域名和本地IP(127.0.0.1)映射产生的效果。
以上是关于SpringBoot使用SSL证书加密API(HTTPS)的主要内容,如果未能解决你的问题,请参考以下文章