springboot--http跳轉https
阿新 • • 發佈:2018-02-12
boot.s store splay height imp gen package servlet int
SSL是為網絡通信提供安全以及保證數據完整性的的一種安全協議,SSL在網絡傳輸層對網絡連接進行加密。
例:cas 的單點登陸就用到了SSL
一、安全證書的生成
1、可以使用jdk自帶的證書生成工具,jdk自帶一個叫keytool的證書管理工具,可以用它來實現簽名的證書。
2、先配置好基本的java環境,ctrl+r 輸入cmd ,進入java 的目錄
3、例:生成一個別名叫tomcat 的證書 先使用命令進入jdk的bin 這裏的密碼是123456
keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456
4、獲取一個tomcat.keystore的文件,將這個文件放到項目的目錄中
二、配置SSL
1、編輯application.properties這個文件
package com.example;
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.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class SpringBootHttpsApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootHttpsApplication.class, args);
}
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector監聽的http的端口號
connector.setPort(8080);
connector.setSecure(false);
//監聽到http的端口號後轉向到的https的端口號
connector.setRedirectPort(8443);
return connector;
}
}
三、測試使用
1、查看啟動信息
2、訪問地址localhost:8080/AmazeUI-2.7.2/login.html 我自定義了一個html網頁,它已經轉向到了8443端口
3、瀏覽器的地址欄中顯示不安全:因為這個證書是不收信任的,傳統一般都企業都是需要購買此證書的
springboot--http跳轉https