springboot如何將http轉https
springboot http轉https
一、安全證書的生成
可以使用jdk自帶的證書生成工具,jdk自帶一個叫keytool的證書管理工具,可以用它來實現簽名的證書。
1、進入cmd命令控制終端
2、生成一個證書
別名:alias = tomcat
密碼:keypass = 123456
生成位置:keystore = D:/keys
keys文件夾需要自己先創(chuàng)建好
cmd命令:
keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456
3、獲取tomcat.keystore文件,放入項目根目錄下面

二,配置yml文件
server:
port: 8443
ssl:
key-store: server.keystore
key-alias: tomcat
enabled: true
key-store-type: JKS
key-store-password: 123456
三、springbootApplication啟動類配置
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.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class WeijingApplication {
public static void main(String[] args) {
SpringApplication.run(WeijingApplication.class, args);
}
@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("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}
啟動成功
另外:springboot2.xx版本以上可以用上面的方法 如果2.xx以下的 就要換成
EmbeddedServletContainerFactory
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.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class WeijingApplication {
public static void main(String[] args) {
SpringApplication.run(WeijingApplication.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監(jiān)聽的http的端口號
connector.setPort(8080);
connector.setSecure(false);
//監(jiān)聽到http的端口號后轉向到的https的端口號
connector.setRedirectPort(8443);
return connector;
}
另外:報錯端口被占用的話可以看下這個

報錯是因為不能讀取配置文件的端口,那個端口是要被用的
部署到Linux服務器 https啟動失敗報錯 原因:
部署到服務器的時候 需要用再linux服務器上面 重新用Linux的JDK生成證書 (不能用windows生成的證書) 并放再固定的文件夾位置
更改yml文件配置

更改成服務器文件夾路徑:/usr/local/xxx/server.keystore
到此這篇關于springboot如何將http轉https的文章就介紹到這了,更多相關springboot http轉https內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java HashMap三種循環(huán)遍歷方式及其性能對比實例分析
這篇文章主要介紹了Java HashMap三種循環(huán)遍歷方式及其性能對比,結合具體實例形式分析了Java HashMap三種循環(huán)遍歷方式的實現方法、運行效率及性能優(yōu)劣,需要的朋友可以參考下2019-10-10
如何解決java.util.zip.ZipFile解壓后被java占用問題
這篇文章主要介紹了如何解決java.util.zip.ZipFile解壓后被java占用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Java CharacterEncodingFilter過濾器的理解和配置案例詳解
這篇文章主要介紹了Java CharacterEncodingFilter過濾器的理解和配置案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08

