一。首先我們要先有一個簡單的spring-boot項目:原先已經寫過一篇創建spring-boot的文章了
二、獲得ssl證書:方法不唯一,又從網上的大平臺下載也能自己生成。自己生成的也寫過了
三、在spring-boot項目中配置。配置分四步。
1.將得到的ssl證書放在項目的根目錄下。如圖:
2.在application.properties文件中配置
server.port=8443
server.ssl.key-store=tomcat.keystore
server.ssl.key-store-password=tomcat
server.ssl.keyStoreType=JKS
server.ssl.keyAlias=tomcat
說明下:
8443:指的是你https的請求端口(不固定,可以改)
tomcat.keystore :值得是你證書的路徑,因爲在根目錄下所以就只有文件名
password:這是你密鑰的密碼
storeType:這是你ssl證書的標準(還有一種PKCS12)
keyAlias:是你密鑰庫的密碼
注:password最好和keyAlias保持一致,不然出錯我也沒辦法,誰有解決方法麻煩告知我下。
配置好後,啓動你的spring-boot就可以看效果了。
看到這不要慌,點擊高級。
就成功訪問到了。
其實這就已經好了,只是chrome還是提示證書不安全,是因爲我用的證書是我自己生成的它是不認的。Chrome只認大平臺頒發的。
上面就是使用ssl證書,接下來說說,如何讓用戶請求http:8080端口然後自動跳轉到https的8443端口。
想要讓8080端口的請求自動跳轉到https:8443端口的話我們要怎麼搞?
思路是這樣的:
首先我們得知道8080端口被請求了,所以我們得監聽8080端口得到用戶的請求。那我們拿到了用戶的請求又怎麼才能跳轉到我們指定的端口呢?
有些同學應該已經有思路了~~重定向。
但是在springboot就很簡單了。
在你的啓動類中加入如下代碼就ok了:
/**
* http重定向到https
* @return
*/
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@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;
}
把段代碼加上就可以直接啓動了。是不是簡單粗暴?對這兩段代碼不清楚?嘿嘿我也不清楚,等我研究下就發文章並把鏈接更新到這個文章上。不過現在就已經實現了跳轉,當然如果你又強迫症可以用大平臺的證書就不會被chrome認爲不安全了