用jdk生成ssl證書
阿新 • • 發佈:2019-01-10
C:\Program Files\Java\jdk1.8.0_131\bin>keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\keys\tomcat.keystore -validity 36500 輸入金鑰庫口令: 再次輸入新口令: 您的名字與姓氏是什麼? [Unknown]: weixin.xxx.com 您的組織單位名稱是什麼? [Unknown]: 您的組織名稱是什麼? [Unknown]: 您所在的城市或區域名稱是什麼? [Unknown]: 您所在的省/市/自治區名稱是什麼? [Unknown]: 該單位的雙字母國家/地區程式碼是什麼? [Unknown]: CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正確? [否]: y 正在為以下物件生成 2,048 位RSA金鑰對和自簽名證書 (SHA256withRSA) (有效期為 36,500 天): CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 輸入 <tomcat> 的金鑰口令 (如果和金鑰庫口令相同, 按回車): [正在儲存D:\keys\tomcat.keystore]
找到tomcat目錄下的conf/server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystorefile="D:/keys/tomcat.keystore" keystorepass="1234567" />
嘗試啟動tomcat,報錯:
Failed to load keystore type JKS with path C:\Users\36400/.keystore due to C:\Users\36400\.keystore (系統找不到指定的檔案。)
java.io.FileNotFoundException: C:\Users\36400\.keystore (系統找不到指定的檔案。)
解決:
keytool -genkey -alias tomcat -keyalg RSA 輸入金鑰庫口令: 再次輸入新口令: 您的名字與姓氏是什麼? [Unknown]: weixin.xxx.com 您的組織單位名稱是什麼? [Unknown]: 您的組織名稱是什麼? [Unknown]: 您所在的城市或區域名稱是什麼? [Unknown]: 您所在的省/市/自治區名稱是什麼? [Unknown]: 該單位的雙字母國家/地區程式碼是什麼? [Unknown]: CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正確? [否]: y 輸入 <tomcat> 的金鑰口令 (如果和金鑰庫口令相同, 按回車):
再次重啟tomcat,訪問https://127.0.0.1:8443/
這樣還沒有結束,除了https://127.0.0.1:8443/可以開啟tomcat主頁面外,http://127.0.0.1:8080/ 也可以開啟。
這需要將訪問8080埠的請求強制跳轉到8443埠,開啟tomcat目錄下conf/web.xml,在倒數第二行新增:
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
重啟tomcat,發現http的請求會自動轉換成https。