Springboot 通过配置SSL实现http自动https

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot 通过配置SSL实现http自动https相关的知识,希望对你有一定的参考价值。

一、 证书是什么

1、数据的安全性

对数据进行签名(加密)是我们在网络中最常见的安全操作。签名有双重作用,作用一就是保证数据的完整性,证明数据并非伪造,而且在传输的过程中没有被篡改,作用二就是防止数据的发布者否认其发布了该数据。

2、SSL协议

SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议分为两层,SSL记录协议建立在TCP之上,为高层协议提供数据封装、压缩、加密等基本功能支持。SSL握手协议建立在SSL记录协议之上,用户实际数据传输开始前进行身份验证、协商加密算法、交换加密秘钥。

3. .jks文件

jks是Java密钥库(KeyStore)比较常见的一种格式(我所知道的共有5种,JKS, JCEKS, PKCS12, BKS,UBER),是JAVA的keytools证书工具支持的证书私钥格式。

二、 通过Springboot配置SSL

1、生成证书

  • 专业的SSL证书较为昂贵,可以在腾讯云或者阿里云上申请免费的SSL证书。
  • 如果只是做简单的demo,可以使用java自带的keytool工具生成SSL证书。可参考 keystore.jsk打包

2、application.yml 配置

技术图片

3、测试SSL是否配置成功

技术图片
测试: https://localhost:8443/api/v1.0/demo/testDemo 看是否有返回值,返回了如上图描述,就表示成功了

4、若有http自动跳转到https等需求,则向spring容器中注入两个Bean,代码如下【注意下,springboot2.X 之后调整了 TomcatEmbeddedServletContainerFactory调整成了 TomcatServletWebServerFactory】

技术图片
技术图片
测试:https://localhost:8080/api/v1.0/demo/testDemo 看是否自动跳转到了https://localhost:8443/api/v1.0/demo/testDemo ,就表示成功了

以上是关于Springboot 通过配置SSL实现http自动https的主要内容,如果未能解决你的问题,请参考以下文章

链接SpringBoot配置SSL同时支持http和https访问

SpringBoot---Web开发---SSL配置

树莓派/Debian Apache2 配置自建 CA 实现 HTTPS(SSL) 服务

springboot--http跳转https

Spring Boot 使用SSL-HTTPS

Spring Boot如何配置SSL实现https协议