您现在的位置是:首页 >技术杂谈 >SpringBoot项目中配置SSL,开启HTTPS网站首页技术杂谈
SpringBoot项目中配置SSL,开启HTTPS
简介SpringBoot项目中配置SSL,开启HTTPS
①创建你的SpringBoot项目之后,检查项目是否能正常访问,写一个测试接口
测试成功!
ps:这里有 ‘/api’ 的前缀是因为我配置了
server.servlet.context-path=/api
②使用命令行生成证书文件
keytool -genkeypair -alias [你自定义的密钥库别名] -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650
按回车之后根据提示信息 输入密码,个人信息等数据。最后问数据是否正确输入 是!
此时生成证书文件。
证书文件生成位置:C:UsersYourUsername
生成文件名称为 keystore.p12 文件
③复制此文件到java目录 src/resources 下
④编写配置文件properties,或者yml文件
properties文件编写方式
# HTTPS 端口
server.port=8443
# 指定密钥库文件路径
server.ssl.key-store=classpath:keystore.p12
# 指定密钥库类型
server.ssl.key-store-type=PKCS12
# 指定密钥库别名
server.ssl.key-alias=刚才你自定义的别名
# 指定密钥库密码
server.ssl.key-store-password=刚才你输入的密码
yml文件编写方式
server:
port: 8443
ssl:
key-store: classpath:keystore.p12
key-store-type: PKCS12
key-alias: 自定义别名
key-store-password: 自定义密码
⑤编写tomcat端口重定向配置文件
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TomcatConfig {
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setScheme("http");
connector.setPort(8989); // HTTP 端口
connector.setSecure(false);
connector.setRedirectPort(8443); // 重定向到 HTTPS 端口
return connector;
}
}
解释:
server.port=8443
:将 Spring Boot 应用的默认端口设置为 8443,用于 HTTPS 连接。redirectConnector()
方法:创建一个额外的 Tomcat 连接器,将其端口设置为 8989 作为 HTTP 端口。当有 HTTP 请求到达该端口时,会将请求重定向到 8443 端口的 HTTPS 连接。
完成以上配置后,启动 Spring Boot 应用,就可以通过 http://localhost:8989
访问应用,它会自动重定向到 https://localhost:8443
。
⑥测试接口是否能使用https
测试成功!
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。