使用SpringBoot內嵌的tomcat 做SSL配置——https

 
1.1 確定JDK有 keytool 文件
 
在合適目錄下運行 keytool -genkey -alias tomcat    將相關信息輸入,在當前目錄下會生成 keystore 文件。
 
-genkey      在用戶主目錄中創建一個默認文件".keystore",還會產生一個mykey的別名,mykey中包含用戶的公鑰、私鑰和證書(在沒有指定生成位置的情況下,keystore會存在用戶系統默認目錄)
 
-alias       產生別名,每個keystore都關聯這一個獨一無二的alias,這個alias通常不區分大小寫
 
-keystore    指定密鑰庫的名稱(產生的各類信息將不在.keystore文件中)
 
-keyalg      指定密鑰的算法 (如 RSA  DSA(如果不指定默認採用DSA))
 
-validity    指定創建的證書有效期多少天
 
-keysize     指定密鑰長度
 
-storepass   指定密鑰庫的密碼(獲取keystore信息所需的密碼)
 
-keypass     指定別名條目的密碼(私鑰的密碼)
 
-dname       指定證書擁有者信息
 
-list        顯示密鑰庫中的證書信息     
 
-v           顯示密鑰庫中的證書詳細信息
 
-export      將別名指定的證書導出到文件
 
-file        參數指定導出到文件的文件名
 
-delete      刪除密鑰庫中某條目
 
-printcert   查看導出的證書信息  
 
-keypasswd   修改密鑰庫中指定條目口令   
 
-import      將已簽名數字證書導入密鑰庫
 
------------------------------------------------------------------
缺省值
-alias "mykey" 
-keyalg "DSA" 
-keysize 1024 
-validity 90 
-keystore 用戶宿主目錄中名爲 .keystore 的文件 
-file 讀時爲標準輸入,寫時爲標準輸出
 
 
1.2 keystore信息的查看
keytool -list -v -keystore e:\keytool\yushan.keystore -storepass 123456
 
1.3 導出crt證書
keytool -export -alias 【別名】-keystore 【.keystore路徑】 -file 【要導出的目錄以及crt文件名】-storepass 【密碼】
例:keytool -export -alias tomcat -keystore .keystore -file keystore.crt -storepass holly crm
 
查看crt、cer證書信息
keytool -printcert -file server.crt
 
 
1.4 生成自簽名證書(發佈者和所有者不同)
    
1 生成自簽名證書
keytool -genkeypair -alias golove -keysize 2048 -keyalg RSA -validity 3650 -keystore teststore.jks -storetype JKS
 
2生成證書籤名請求(CSR文件)
keytool -certreq -alias golove -keystore teststore.jks -file temp_go_love.csr
 
3生成一個自簽名證書作爲CA根證書,名字與姓氏選項這裏填入root
keytool -genkeypair -alias rootca -keysize 2048 -keyalg RSA -validity 3650 -keystore teststore.jks -storetype JKS
 
4使用CA證書給golove證書籤名,即用CA的私鑰簽名後與golove的公鑰生成一個證書
keytool -gencert -alias rootca -keystore teststore.jks -infile temp_go_love.csr -outfile golove_new.crt
 
5將二級證書導回teststore庫中,並且直接替換原有別名爲golove的條目
keytool -import -v -alias golove -file golove_new.crt -keystore teststore.jks
 
     
 
 
2.1  配置文件
 
 
 
 
 
3.1 強制http 跳轉到 https協議 
 
    方式一:java代碼監控其他端口,做跳轉
@EnableAutoConfiguration
public class TestController {
 
@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(httpConnector());
return tomcat;
}
 
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80); //該種方法不可與配置文件中的端口相同
connector.setSecure(false);
connector.setRedirectPort(443); //https 的默認端口
return connector;
}
 
}
 
 
發佈了29 篇原創文章 · 獲贊 9 · 訪問量 9288
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章