apache-tomcat 8.5 SSL證書佈置及強制https
一、使用jdk自帶的工具生成數字證書,如下:
先進入tomcat conf目錄下,建立一個資料夾key
然後,
keytool -genkey -v -alias tomcat -keyalg RSA -keystore C:\apache-tomcat-8.5.31\conf\key\tomcat.keystore -validity 36500
keytool.exe 命令位於Java\jdk1.8.0_77\bin的目錄下,如果沒有配置Jdk的環境變數,就要進入目錄再使用。
在linux伺服器上keytool命令同樣可用:
[[email protected] conf]# keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/apache-tomcat-8.5.31/conf/key/tomcat.keystore -validity 36500
命令引數部分解釋:
C:\apache-tomcat-8.5.31\conf\key\tomcat.keystore :表示數字證書生成後的檔案路徑
36500 :表示有效時間,36500天,預設90天
-
輸入金鑰庫口令:
-
再次輸入新口令:
-
您的名字與姓氏是什麼?
-
[Unknown]: jizhi # 或者此處寫域名eg: localhost
-
您的組織單位名稱是什麼?
-
[Unknown]: spark
-
您的組織名稱是什麼?
-
[Unknown]: spark
-
您所在的城市或區域名稱是什麼?
-
[Unknown]: beijing
-
您所在的省/市/自治區名稱是什麼?
-
[Unknown]:
-
該單位的雙字母國家/地區程式碼是什麼?
-
[Unknown]:
-
CN=jizhi, OU=spark, O=spark, L=beijing, ST=Unknown, C=Unknown是否正確?
-
[否]: y
-
正在為以下物件生成 2,048 位RSA金鑰對和自簽名證書 (SHA256withRSA) (有效期為 36,50
-
0 天):
-
CN=jizhi, OU=spark, O=spark, L=beijing, ST=Unknown, C=Unknown
-
輸入 <tomcat> 的金鑰口令
-
(如果和金鑰庫口令相同, 按回車):
-
再次輸入新口令:
-
[正在儲存C:\apache-tomcat-8.5.31\conf\key\tomcat.keystore]
-
C:\Users\Administrator>
二、tomcat的server.xml配置
1、註釋掉8080埠配置 (不是必須,也可以不註釋,不註釋的話,則http 8080埠也可以訪問)
<!--<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />-->
2、取消註釋8443埠配置,並改為443埠(訪問不加埠的設定)(注意:Https訪問的埠是8443,可以修改成別的埠。),將生成的正式和密碼配置到keystoreFile="C:\apache-tomcat-8.5.31\conf\key\tomcat.keystore" keystorePass="123456"
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
keystoreFile="C:\apache-tomcat-8.5.31\conf\key\tomcat.keystore" keystorePass="123456"
>
<!--<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>-->
</Connector>
注意:
如果是tomcat8.0,由於tomcat8.0的server.xml和tomcat8.5的不同,tomcat8.0的server.xml檔案應該這樣改動:
keystoreFile="D:\soft\apache-tomcat-8.0.47-9200\conf\key\tomcat.keystore"
keystorePass="tomcat123",此密碼就是生成證書時的密碼。
屬性 描述 clientAuth 如果設為true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證 keystoreFile 指定keystore檔案的存放位置,可以指定絕對路徑,也可以指定相對於<CATALINA_HOME>(Tomcat安裝目錄)環境變數 的相對路徑。如果此項沒有設定,預設情況下,Tomcat將從當前作業系統使用者的使用者目錄下讀取名為“.keystore”的檔案。 keystorePass 指定keystore的密碼,如果此項沒有設定,在預設情況下,Tomcat將使用“changeit”作為預設密碼。 sslProtocol 指定套接字(Socket)使用的加密/解密協議,預設值為TLS,使用者不應該修改這個預設值。 ciphers 指定套接字可用的用於加密的密碼清單,多個密碼間以逗號(,)分隔。如果此項沒有設定,在預設情況下,套接字可以使用任意一個可用的密碼。
3、更改8443埠為443
改為:
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
三、訪問,輸入https://localhost/ 或 https://192.168.0.116