生成證書,可以使自簽名或者從SSL證書授權中心獲得的。
cmd進入JDK安裝目錄(D:\Java\jre1.8.0_181\bin),利用keytool證書管理工具,生成自簽名證書。
生成命令如下(找不到keytoo命令的先去配置java環境)
我指定的名字叫tomcat.keystore 別名叫tomcat,密碼自己設置,我這里用的tomcat,最后那個直接按得回車
keytoo命令:
keytool -genkey -alias tomcat -keyalg RSA -keystore D:/httpsKey/tomcat.keystore
2.SpringBoot配置SSL
將生成的自簽名證書:tomcat.keystore拷貝到項目根目錄下,與application.yml同級,如下圖所示:
3.配置application.yml
server: port: 8084 ssl: key-store: classpath:tomcat.keystore #證書的路徑 key-store-password: 123456 #證書密碼,請修改為您自己證書的密碼 key-store-type: JKS #證書類型(秘鑰庫類型) key-alias: tomcat #證書別名 enabled: true #開啟HTTPS
4.http訪問自動轉https訪問
在啟動類中添加如下兩個方法,更改tomcat配置
@EnableSwagger2 @ComponentScan(basePackages = "com.guodi") @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * 將http請求變成https請求 * @return */ @Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addAdditionalTomcatConnectors(createStandardConnector()); return tomcat; } /** * 將http請求變成https請求 * @return */ private Connector createStandardConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setPort(8083); return connector; } }
在啟動的時候就會發現兩個端口,一個https,與一個http