springboot项目 http接口转https接口

时间:2024-04-09 13:08:08

spring boot项目http接口转成https接口文档
1.首先下载ssl证书,可以在支付宝等大平台申请,因为本地jdk获取的证书在网页连接中会提示不安全,是不被浏览器认可的
2.为了方便在本地jdk bin目录,运行cmd命令
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 (windows版)
keytool -genkey -alias tomcat -keyalg RSA -validity 20000 -keystore keystore.p12 (Linux版)
springboot项目 http接口转https接口

----除了密码别的随便输-----

关于keytool的说明:
keytool -genkey
-alias你的证书别名
-keyalg **算法
-keystore 证书库文件保存的位置和文件名
-keysize **长度
-validity 证书有效期天数
之后会jdk的bin目录生成一个keystore.p12的文件
3.配置application.properties

(直接复制)
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat

将上面生成的keystore.p12文件移动到classpath下
4.最后需要在spring boot启动类里配置

在启动类里配置两个bean就ok了

// springboot2 写法
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@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”);
//将http的访问端口重定向到https的访问端口
connector.setScheme(“http”);
//http的访问端口
connector.setPort(80);
connector.setSecure(false);
//https的访问端口 就是ssl证书的端口 默认是443
connector.setRedirectPort(443);
return connector;
}

这样就可以直接用https访问了