这里讲的是 Spring Boot 内嵌式 Server 打 jar 包运行的方式,打 WAR 包部署的就不存在要 Spring Boot 支持 HTTPS 了,只需去外部对应的 Server 配置。
HTTPS
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
SpringBoot支持Https
第一步:获取证书
要获取一个https证书,本地我们可以借助 Java 自带的 JDK 管理工具 keytool 来生成一个免费的 https 证书,也可以到腾讯云免费申请一个。
使用JDK生成,首先需要安装JDK,配置好java环境变量。
cmd进入命令行输入keytool回车有输出不报错就行。
执行命令:
| 1 | keytool -genkey -alias spring -keypass 123456 -storetype PKCS12 -keyalg RSA -keysize 2048 -validity 365 -keystore E:/spring.keystore -storepass 654321 | 
E:/spring.keystore -> E:/spring.p12 ??
其中几个参数的解释如下:
- -alias指定别名
- -keypass此别名对应密码
- -storetype指定密钥仓库类型
- -keyalg生证书的算法名称,RSA是一种非对称加密算法
- -keysize证书大小
- -keystore生成的证书文件的存储路径
- -validity证书的有效期
依次填写证书相关的信息:

在E盘下就生成一个文件spring.keystore。
第二步:springboot项目中引入https
将刚刚生成的证书文件拷贝到项目中的resources目录中,修改application.properties文件,添加HTTPS支持。
| 1 | server.ssl.key-store=spring.keystore | 
配置完成后就启动可以启动项目了。
部署完成后使用工具:SSL证书验证,SSL检测安装工具 来检查SSL是否部署成功。
配置好Https兼容http
配置好Https发现http就不好用了,此时访问http地址是不成功的,如果需要支持支持HTTP重定向到HTTPS,需要在配置类中配置一个TomcatEmbeddedServletContainerFactory bean:
| 1 | 
 | 
此时访问http://localhost:8081 会自动跳转到https://localhost:8080 表明配置成功。
