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)的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS网站证书申请,HTTPS的安全特性

HTTP和HTTPS有什么区别? 什么是SSL证书?使用ssl证书优势?

http认证方式

Https系列之一:https的简单介绍及SSL证书的生成

SpringBoot--实战开发--整合SSL(五十五)

springboot--http跳转https