使用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;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.