SpringBoot使用教程【2】支援Https以及Http重定向Https
生成證照
利用java生成證照命令:window cmd視窗進入java bin目錄
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
配置證照
Springboot專案配置證照,其它專案自行搜尋相應的配置方法
application.properties 配置 。keystore.p12放入專案根路徑。
server.port=8081
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=123456
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias:tomcat
Http重定向Https
我們希望原來的http請求能自動重定向到最新的Https請求地址,從而避免客戶端更改相應的介面地址:
package com.didispace;
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import com.sun.org.apache.bcel.internal.classfile.Method;
@SuppressWarnings("unused")
@SpringBootApplication
public class ChapterApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ChapterApplication.class, args);
}
// protected SpringApplicationBuilder configure(SpringApplicationBuilder
// application) {
// return application.sources(ChapterApplication.class);
// }
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@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;
}
private Connector initiateHttpConnector() {
Connector connector = new Connector(
"org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8081);
return connector;
}
}
發現問題
-
Http重定向Https的時候,埠號不能相同,否者啟動專案的時候會報 埠占用 的異常錯誤;
- Http重定向Https的時候,Get請求是沒有任何問題的。但是一旦重定向為POST請求的時候,就會報405請求方法不支援的錯誤。原因在於重定向的時候,Get請求沒有轉化為對應的POST請求。用如下方法可以解決這個問題(此方法是錯誤的):
https://stackoverflow.com/questions/42108498/redirect-post-method-http-https-http-status-405-spring-boot
SecurityCollection collection = new SecurityCollection();
collection.addMethod("post"); //新增post方法
collection.addPattern("/*");
驗證成功:
參考文獻
相關文章
- 使用htaccess Https到http重定向HTTP
- springboot部署到阿里雲,配置https,springboot專案同時支援http和https請求,阿里雲配置httpsSpring Boot阿里HTTP
- Nginx怎樣將HTTP重定向到HTTPSNginxHTTP
- https與http區別以及https資料加密解密過程HTTP加密解密
- nginx開啟ssl並把http重定向到httpsNginxHTTP
- 應用同時支援HTTP和HTTPSHTTP
- 簡單比較 http https http2,我們要如何把http升級為httpsHTTP
- HTTP和HTTPSHTTP
- HTTP 和 HTTPSHTTP
- HTTPS和HTTPHTTP
- HTTP與HTTPS:為什麼HTTPS比HTTP更安全?HTTP
- http,https, http2.0HTTP
- springboot 配置 httpsSpring BootHTTP
- HTTP協議圖文簡述--HTTP/HTTPS/HTTP2HTTP協議
- Nginx配置正向代理支援HTTP和HTTPS轉發NginxHTTP
- 深入理解http1.x、http 2和httpsHTTP
- 學習HTTP——HTTPSHTTP
- 從HTTP到HTTPSHTTP
- SSL:http與httpsHTTP
- 計算機網路——深入理解HTTP以及HTTPs計算機網路HTTP
- 教你如何給 Discuz! X3.1/3.2 開啟https(SSL)支援! – HTTPS SSL 教程HTTP
- Java Keytool 命令使用教程 – HTTPS SSL 教程JavaHTTP
- 小程式https請求,http網站升到httpsHTTP網站
- nginx 部署vue http、httpsNginxVueHTTP
- http怎麼改成httpsHTTP
- 【http】https加速優化HTTP優化
- [深入17] HTTP 和 HTTPSHTTP
- HTTP和HTTPS協議HTTP協議
- HTTP 與 HTTPS 簡介HTTP
- HTTP和HTTPS詳解HTTP
- Http與Https協議HTTP協議
- 在Nginx下部署SSL證書並重定向至HTTPS的教程NginxHTTP
- NGINX使用rewrite實現http 跳轉 httpsNginxHTTP
- 安裝SSL證書的網站如何實現HTTP重定向到HTTPS網站HTTP
- 什麼是HTTPS證書?HTTP與HTTPS的區別HTTP
- 阿里雲配置http轉https阿里HTTP
- HTTPS 和HTTP的介紹HTTP
- http和https的區別HTTP
- HTTPS和HTTP的區別HTTP