Spring Boot同時開啟HTTP和HTTPS服務
阿新 • • 發佈:2017-08-30
官方 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 { @Beanpublic 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服務