最近碰到一個很頭疼的事情 內網的tomcat服務器使用的是https協議,之前一直沒有發現有什麼問題,
現在突然發現其他它的前端靜態文件從來不走緩存,大概有10M左右的js css文件 居然是每次訪問的時候都要去下載,排查了幾個小時 本以爲是後端靜態文件版本控制出了問題,結果最後發現居然是谷歌瀏覽器的問題. 火狐 IE 即使https 不信任站點一樣正常會有緩存 谷歌瀏覽器的策略居然是 只要非安全站點統統不緩存
接下來自然是製作證書試圖讓瀏覽器信任網站了,結果製作證書又遇到一堆問題,怎麼都信任不了,好不容易終於搞定了,這裏記個筆記
證書製作採用的仍舊是jdk自帶的keytool
命令行照下面修改 其中 “C:/Users/lenovo/Desktop/tomcat.keystore” 是文件保存路徑
-ext san=ip:168.5.22.49 最爲重要 爲證書指定信任的域名或IP 所以不同環境證書都要重新制作過
如果存在域名或多個IP: SAN=dns:xxx.abc.com,ip:1.1.1.1 可以類似這樣 用英文逗號分隔
//命令
keytool -genkey -v -alias tomcat -keyalg RSA -keystore "C:/Users/lenovo/Desktop/tomcat.keystore" -ext san=ip:168.5.22.49 -validity 36000
//===========================================================
//製作全過程
C:\Users\lenovo>keytool -genkey -v -alias tomcat -keyalg RSA -keystore "C:/Users/lenovo/Desktop/tomcat.keystore" -ext san=ip:168.5.22.49 -validity 36000
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什麼?
[Unknown]: -ext san=ip:168.5.22.49
您的組織單位名稱是什麼?
[Unknown]:
您的組織名稱是什麼?
[Unknown]:
您所在的城市或區域名稱是什麼?
[Unknown]:
您所在的省/市/自治區名稱是什麼?
[Unknown]:
該單位的雙字母國家/地區代碼是什麼?
[Unknown]:
CN="-ext san=ip:168.5.22.49", OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正確?
[否]: Y
正在爲以下對象生成 2,048 位RSA密鑰對和自簽名證書 (SHA256withRSA) (有效期爲 36,000 天):
CN="-ext san=ip:168.5.22.49", OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
輸入 <tomcat> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
[正在存儲C:/Users/lenovo/Desktop/tomcat.keystore]
其中 您的名字與姓氏是什麼? 這裏輸的 必須要和 命令行的-ext 一致 如 這裏是 -ext san=ip:168.5.22.49
接下來將證書放到tomcat內 或者固定一個目錄 我這裏直接放tomcat的 根目錄
打開 tomcat 的conf 的server.xml
打開https 的Connector註釋 修改 keystoreFile指向祕鑰文件 keystorePass輸入剛纔的祕鑰密碼即可
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
keystoreFile="D:/apache-tomcat/tomcat.keystore"
keystorePass="123456"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
重啓tomcat 訪問網站
點擊 不安全 三個字
順利導出證書
右鍵 安裝證書 下一步
然後 一下步 直到完成 重啓瀏覽器
OVER