如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继版本],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方式进行传输,并保护敏感数据免受窃听者或黑客的攻击。
您可以通过在Web应用程序上安装SSL证书来实现HTTPS。您可以使用由受信任的证书颁发机构(CA)颁发的证书或“自签名证书”。
为了发展和学习目的,您可以使用自签名证书。您将使用Java Keytool生成自签名证书。
自签名证书
您可以使用位于JDK bin文件夹下的Keytool生成证书。例如,C:\ Program Files \ Java \ jdk1.8.0_161 \ bin。可以使用两个自签名证书,如下所示。
1.通过您自己的Java应用程序可以轻松访问JKS(Java**库)。JKS仅限于Java,不能从Java外部访问。
2.PKCS12:另一方面,公钥加密标准是一种与语言无关的方式,用于存储加密的私钥和证书,并且存储时间已经足够长,几乎所有地方都支持。
如何生成 自签名证书
在Windows的搜索字段中键入cmd以找到命令提示符,然后以“以管理员身份运行”右键单击。使用如下的keytool命令。您可以提及所需的证书名称,如下所示。
C:\ Program Files \ Java \ jdk1.8.0_161 \ bin>
keytool -genkeypair -alias selfsigned_localhost_sslserver -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore ebininfosoft-ssl-key.p12 -validity 3650
将SSL应用于Spring Boot应用程序
1.从JDK bin文件夹复制ebininfosoft-ssl-key并将其放在Spring Boot Application的src / main / resources下。
2.如下所示,将SSL**信息添加到application.properties中。
Java

1
#SSL Key Info
2
security.require-ssl=true
3
[email protected]
4
server.ssl.key-store=src/main/resources/ebininfosoft-ssl-key.p12
5
server.ssl.key-store-type=PKCS12
POM文件
以下是我用来指定Spring Boot依赖项的POM.xml。
XML

1

2

3
org.springframework.boot
4
spring-boot-starter-web
5

6

7
org.springframework.boot
8
spring-boot-starter-data-jpa
9

10

11
com.h2database
12
h2
13
runtime
14

15

16
org.springframework.boot
17
spring-boot-starter-test
18
test
19

20

21
org.junit.vintage
22
junit-vintage-engine
23

24

25

26

控制者
用于演示HTTPS Get请求的简单HomeController供您参考。
Java

1
import org.springframework.web.bind.annotation.RequestMapping;
2
import org.springframework.web.bind.annotation.RequestMethod;
3
import org.springframework.web.bind.annotation.RestController;
4
5
@RestController
6
@RequestMapping("/home")
7
public class HomeController {
8
9
@RequestMapping(value = “/”, method = RequestMethod.GET)
10
public String hello() {
11
return “welcome to spring boot application”;
12
}
13
}

最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。如何在Spring Boot应用程序上启用HTTPS?