1. 程式人生 > >Spring Boot同時開啟HTTP和HTTPS服務

Spring Boot同時開啟HTTP和HTTPS服務

官方 keystore ati port 代碼 iop tap oid col

由於Spring Boot中通過編碼開啟HTTPS服務比較復雜,所以官方推薦通過編碼開啟HTTP服務,而通過配置開啟HTTPS服務。

Spring Boot的application.yml中添加如下配置,開啟HTTPS服務

server:
port: 16062
ssl:
key-store: classpath:config/test.jks
key-store-password: 123456
key-password: 123456

其中的jks證書文件可以利用JDK工具keytool.exe(JDK bin目錄下)生成:

keytool -genkeypair -alias test -keyalg RSA -validity 3650 -keystore test.jks

驗證上一步生成的證書:

keytool -list -v -keystore test.jks

導出公鑰證書(可選):

keytool -export -alias test -keystore test.jks -rfc -file test.cer

客戶操作系統上配置該公鑰證書為可信證書後,可消除瀏覽器由於無法驗證私自頒發的證書真實性而產生的HTTPS警告。

Application.java中編寫如下代碼,開啟HTTP服務

@SpringBootApplication
public class SampleTomcatTwoConnectorsApplication {

    @Bean
    
public Integer port() { return SocketUtils.findAvailableTcpPort(); } @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(); tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat; } private Connector createStandardConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setPort(port()); return connector; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleTomcatTwoConnectorsApplication.class, args); } }

Spring Boot同時開啟HTTP和HTTPS服務