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访问