這裏說一下爲何寫這篇文章,由於我也是一個SpringBoot初學者,在配置https的時候遇到了一些坑,根據網上的配置方式,發現一些類已通過時,這裏僅以記錄一下個人配置過程,以供參考.nginx
打開cmd窗口,輸入以下命令spring
keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore
按照提示進行操做apache
輸入密鑰庫口令:123456 再次輸入新口令:123456 您的名字與姓氏是什麼? [Unknown]: kaibowang 您的組織單位名稱是什麼? [Unknown]: yuxuelian 您的組織名稱是什麼? [Unknown]: yuxuelian 您所在的城市或區域名稱是什麼? [Unknown]: chengdu 您所在的省/市/自治區名稱是什麼? [Unknown]: chengdushi 該單位的雙字母國家/地區代碼是什麼? [Unknown]: china CN=kaibowang, OU=yuxuelian, O=yuxuelian, L=chengdu, ST=chengdushi, C=china是否正確? [否]: y 輸入 <tomcat> 的密鑰口令 (若是和密鑰庫口令相同, 按回車): 再次輸入新口令: Warning: JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore C:\Users\Administrator\.keystore -destkeystore C:\Users\Administrator\.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。
建立完成後,可在用戶根目錄查看生成的keystore文件tomcat
server.port=443 server.ssl.key-store=server.keystore server.ssl.key-alias=tomcat server.ssl.enabled=true server.ssl.key-store-password=123456 server.ssl.key-store-type=JKS
說明一下springboot
這裏將服務器端口號設置成443端口,即https的默認訪問端口,那麼在進行https訪問的時候能夠不帶端口號直接訪問,若是端口被佔用使用服務器
netstat -ano
查看哪一個進程號佔用了端口,使用app
tasklist|findstr (查看到的進程號) # simple C:\Users\Administrator>tasklist|findstr 3664 vmware-hostd.exe 3664 Services 0 5,040 K
打開任務管理器,殺死佔用進程,或打開對應的應用程序的設置,關閉監聽
至此 https配置完畢 訪問 https://localhost 查看是否配置成功ide
向spring容器中注入兩個Bean,代碼以下post
@Bean public Connector connector(){ Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(80); connector.setSecure(false); connector.setRedirectPort(443); return connector; } @Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector){ 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(connector); return tomcat; }
首先 這裏須要使用 TomcatServletWebServerFactory 這個類,網上清一色的都是使用 EmbeddedServletContainerFactory 這個類.
在新版本的SpringBoot中,我發現已近找不到這個類了,幾經週轉,翻閱源碼,才找到這個類,這也是我爲何寫這篇文章的初衷.
其次在這裏設置http的監聽端口爲80端口,http默認端口,這樣在訪問的時候也能夠不用帶上端口號.
完成以上配置後,咱們訪問 http://localhost 便可自動跳轉爲 https://localhostspa
參考文章:SpringBoot系列(5)---SpringBoot-Web和SpringBoot基礎
做者:御雪戀 連接:https://www.jianshu.com/p/8d4aba3b972d 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。