springboot部署将http转https
1.腾讯云中申请免费的ssl证书
免费领取ssl证书
申请成功后:
点击下载,可下载ssl证书, 复制tomcat中的jks文件。
ssl证书中tomcat里的jks文件放在resources目录下
2.配置yml或properties文件
server:
port: 443 #原本80端口改为 443端口
ssl:
key-store: classpath:www.itlinhao.cn.jks
key-store-password: xxx #xxx是ssl证书的密码
key-store-type: JKS
3.修改主入口类
添加如下代码:
@Bean
public ServletWebServerFactory 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");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(80);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
修改后大致如下:
可运行测试一下,访问80端口自动跳到https的443端口
出现不安全,问题不大,待部署上线就是安全的了
4.打包部署
我是以jar方式部署,可百度查找springboot的jar方式部署
需注意的是,项目部署的端口为443
如下:
start.sh:
nohup java -jar blog-0.0.1-SNAPSHOT.jar --server.port=443 &