11-Spring Boot HTTPS

Spring HTTPS

  1. 在正常的应用场景之下,HTTPS请求会使得我们的应用程序更加安全。

1. SSL证书

  1. SSL证书是使用HTTPS请求中必不可少的一部分

1.1. 自制HTTPS证书

  1. KeyTool(Java自带):keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
    1. storetype 指定密钥仓库类型
    2. keyalg 生证书的算法名称,RSA是一种非对称加密算法
    3. keysize 证书大小
    4. keystore 生成的证书文件的存储路径
    5. validity 证书的有效期

1.2. 阿里云等证书

  1. 阿里云、腾讯云等购买了服务器都可以申请免费SSL证书,免费证书大致是够用的
  2. 阿里云免费ssl证书(PFX格式证书)安装

1.3. 证书的位置

  1. 放置到项目的根目录上。

2. POM文件设置

1
2
3
4
5
6
7
server:
port: 8000 # 默认HTTPS端口号
ssl:
key-store: keyname.suffix
enabled: true
key-store-password: password
key-store-type: JKS

3. HTTP自动转换HTTPS请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@RestController
@SpringBootApplication
public class TestApplication {

public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}

@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(8080);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(8081);
return connector;
}

}

4. 参考

  1. Spring Boot支持HTTPS请求

11-Spring Boot HTTPS
https://spricoder.github.io/2022/04/13/Spring-Boot/11-Spring-Boot-HTTPS/
作者
SpriCoder
发布于
2022年4月13日
许可协议