springboot配置https
- 什么是https
超文本传输安全协议(HyperText Transfer Protocol Secure),缩写HTTPS:(常称为HTTP over TLS、HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS主要的开发目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司在1994年首次提出,随后扩展到互联网上。
另外,还有一种安全超文本传输协议(S-HTTP),也是 HTTP 安全传输的一种实现,但是 HTTPS 的广泛应用而成为事实上的 HTTP 安全传输实现,S-HTTP并没有得到广泛支持。 - 准备工作
- 首先需要一个https证书,可以从各个云服务厂商处申请一个免费的,不过自己做实验没必要这么麻烦,可以借助Java自带的JDK管理工具keytool来生成一个免费的https证书。
- 进入到%JAVVA_HOME%\bin目录下,执行如下命令生成证书
keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore D:\javaboy.p12 -validity 365
命令含义如下:
genkey:表示要创建一个新的秘钥;
alias:表示keystore的别名;
keyalg:表示使用的加密算法是RSA,一种非对称加密算法;
keysize:表示秘钥的长度;
keystore:表示生成的秘钥的存放位置;
validity:表示秘钥的有效时间,单位为天
具体生成过程如下图:
-
命令执行完成后,会在D盘生成一个javaboy.p12证书,有了这个文件准备工作就可以了
-
在项目中引入https
-
将上面的证书拷贝到resources目录下,然后在application.properties添加如下配置信息
server.ssl.key-store=classpath:javaboy.p12 #密钥文件名
server.ssl.key-alias=tomcathttps #密钥别名
server.ssl.key-store-password=111111 #就是在cmd命令执行过程中输入的密码
- 配置完成后,就可以启动 Spring Boot 项目了,此时如果我们直接使用 Http 协议来访问接口
- 改用 https 来访问 ,结果如下:
这是因为我们自己生成的 https 证书不被浏览器认可,不过没关系,我们直接点击继续访问就可以了(实际项目中只需要更换一个被浏览器认可的 https 证书即可)