SpringBoot2.0專案配置https訪問
阿新 • • 發佈:2018-11-30
要使用https首先我們需要有證書,由於我們自己生成的證書會被多數瀏覽器不信任,所以我們採用申請的免費證書來演示。
一、先來說一說如何申請證書吧
1.登入騰訊雲,選擇雲產品——>SSL證書管理
2.點選申請證書,選擇亞洲誠信,按要求填寫完資訊,提交後大約十分鐘,證書會發到你的郵箱
二、現在我們來為專案配置https
1.下載你所需要型別的證書,並將其放入專案resources目錄下
Windows IIS下的數字證書格式一般為.pfx
Java tomcat 下的數字證書格式一般為.jks或.store
Apache和nginx一般是.pem
2.開啟application.properties配置檔案,新增如下配置
#埠號
server.port=443
#你生成的證書名字
server.ssl.key-store=classpath:放在resources下證書的名字
#金鑰庫密碼
server.ssl.key-store-password=申請證書時新增的祕鑰庫口令
server.ssl.keyStoreType=JKS
這樣我們的https就配置好了,將專案放到申請證書時填入的域名解析到的伺服器上進行測試
三、當用戶訪問http埠的時候,我們需要重定向到https
在啟動類中新增如下兩個方法,更改tomcat配置
@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(initiateHttpConnector()); return tomcat; } /** * 讓我們的應用支援HTTP是個好想法,但是需要重定向到HTTPS, * 但是不能同時在application.properties中同時配置兩個connector, * 所以要以程式設計的方式配置HTTP connector,然後重定向到HTTPS connector * @return Connector */ private Connector initiateHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(80); // http埠 connector.setSecure(false); connector.setRedirectPort(443); // application.properties中配置的https埠 return connector; }