【Spring Boot】使用 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 命令,总之让项目在服务器上跑起来就行
部署成功后访问 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)映射产生的效果。