下面是“SpringBoot2.x配置HTTPS访问的过程”的完整攻略。
1. 生成证书
首先需要生成一对密钥(证书和私钥),可以使用 keytool
工具来生成。在终端中执行以下命令:
keytool -genkeypair -alias mycertalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650
执行完上述命令后,会在当前目录下生成一个名为 keystore.p12
的文件,这就是证书文件,需要将其放到运行项目的根目录中。
2. 给SpringBoot项目添加配置
要让SpringBoot支持HTTPS,需要在配置文件中添加以下内容:
server:
port: 8443
ssl:
key-store: classpath:keystore.p12
key-store-type: PKCS12
key-store-password: password
key-alias: mycertalias
其中:
server.port
指定Web服务器端口;server.ssl.key-store
指定证书文件路径;server.ssl.key-store-type
指定证书类型;server.ssl.key-store-password
指定证书密码;server.ssl.key-alias
指定证书别名。
3. 编写示例代码
下面我们来看两个示例。
示例1:SpringBoot Web项目
1. 生成证书
参考上述步骤生成证书。
2. 添加依赖
在 pom.xml
中添加 spring-boot-starter-security
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
3. 配置HTTPS
在 application.yml
中添加配置:
server:
port: 8443
ssl:
key-store: classpath:keystore.p12
key-store-type: PKCS12
key-store-password: password
key-alias: mycertalias
4. 编写Controller
@RestController
public class HelloController {
@GetMapping("/")
public String hello() {
return "Hello world!";
}
@GetMapping("/secure")
public String secure(HttpServletRequest request) {
return "Hello secure world!";
}
}
5. 启动项目
启动项目即可访问 https://localhost:8443
和 https://localhost:8443/secure
。
示例2:SpringBoot Webflux项目
1. 生成证书
参考上述步骤生成证书。
2. 添加依赖
在 pom.xml
中添加 org.springframework.boot
和 spring-boot-starter-webflux
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
3. 创建HttpHandler
@Component
public class HelloHandler implements HttpHandler {
@Override
public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
String result = "Hello, World!";
response.setStatusCode(HttpStatus.OK);
response.getHeaders().add("Content-Type", "text/plain;charset=UTF-8");
return response.writeWith(Flux.just(result).map(s -> response.bufferFactory().wrap(s.getBytes())));
}
}
4. 分配路由
@Configuration
public class HelloRouter {
@Bean
public RouterFunction<ServerResponse> route(HelloHandler helloHandler) {
return RouterFunctions.route(RequestPredicates.GET("/hello").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), helloHandler::handle);
}
}
5. 配置HTTPS
在 application.yml
中添加配置:
server:
port: 8443
ssl:
key-store: classpath:keystore.p12
key-store-type: PKCS12
key-store-password: password
key-alias: mycertalias
6. 启动项目
启动项目即可访问 https://localhost:8443/hello
。
好了,以上就是SpringBoot2.x配置HTTPS访问的完整攻略。希望能帮到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot2.x配置HTTPS访问的过程 - Python技术站