给SpringBoot的RESTful API加上HTTPS(生产环境)

Posted pcdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给SpringBoot的RESTful API加上HTTPS(生产环境)相关的知识,希望对你有一定的参考价值。

步骤

  1. 申请证书(腾讯云)
  2. 下载证书
  3. 把证书放在resources目录下
  4. 编写springboot的配置文件(yml或properties)
  5. 查看效果,部署生效

1 申请免费的SSL证书,腾讯云,填写相关信息即可,如绑定的域名、邮箱、备注名
在这里插入图片描述

2 大约等10分钟就有结果了,在申请成功的证书列表点击下载
在这里插入图片描述
下载完成后,目录结构如下,因为SpringBoot内置的是Tomcat,所以就选Tomcat,其余的用不到
在这里插入图片描述

3 打开Tomcat,有两个文件,将.jks结尾的拷贝到springboot项目的resource目录下
在这里插入图片描述
在这里插入图片描述

4 编写配置文件,和你的文件名保持一致,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生效了。

以上是关于给SpringBoot的RESTful API加上HTTPS(生产环境)的主要内容,如果未能解决你的问题,请参考以下文章

玩转 SpringBoot 2 快速搭建 | RESTful Api 篇

企业级 SpringBoot 教程 springboot集成swagger2,构建优雅的Restful API

SpringBoot RESTful API 架构风格实践

springboot集成swagger2,构建优雅的Restful API

(转) SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API

SpringBoot使用Swagger2实现Restful API