基礎環境:Centos 7.X 1. 安裝tomcat 與java 環境; 2.使用jre 程式的keytool 生成密鑰,java 我使用解壓版本並運行目錄在/usr/java, 生成tomcat.keystore 密鑰文件; 然後會提示輸入DNS 信息及密碼: 3.使用keytool 通過tom ...
基礎環境:Centos 7.X
1. 安裝tomcat 與java 環境;
2.使用jre 程式的keytool 生成密鑰,java 我使用解壓版本並運行目錄在/usr/java,
生成tomcat.keystore 密鑰文件;
1 /usr/java/jre/bin/keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
然後會提示輸入DNS 信息及密碼:
Enter keystore password: 設置一個用於保護你keystore文件的密碼,例如123456 Re-enter new password: 重覆上面的密碼 What is your first and last name? [Unknown]: yourdomain.com 輸入你網站的功能變數名稱,註意Godaddy的證書一個只能簽名一個功能變數名稱,也就是說 baidu.com 和 www.baidu.com 不是同一個功能變數名稱,這裡應該填寫你準備簽名的那一個功能變數名稱。 What is the name of your organizational unit? [Unknown]: Networking 組織單位名稱(隨便) What is the name of your organization? [Unknown]: yourdomain.com 組織名稱(隨便) What is the name of your City or Locality? [Unknown]: Guangzhou 所在城市(隨便) What is the name of your State or Province? [Unknown]: Guangdong 所在省份(隨便) What is the two-letter country code for this unit? [Unknown]: CN 所在國家的兩位代號(隨便) Is CN=www.yourdomain.com, OU=Networking, O=yourdomain.com, L=Shenzhen, ST=Guangdong, C=CN correct? [no]: yes 以上信息正確則輸入yes Enter key password for (RETURN if same as keystore password): 輸入前面的keystore 密碼
3.使用keytool 通過tomcat.keystore 生成csr文件,csr.csr 是csr的文件,提前的csr 名稱可以自定義;
1 /usr/java/jre/bin/keytool -certreq -keyalg RSA -alias tomcat -file csr.csr -keystore tomcat.keystoreGenerate csr
4.官方申請證書;
登錄到你購買 SSL 證書商(這裡是 GoDaddy),根據提示進入輸入 CSR 的頁面,用文本編輯器打開剛纔生成的 csr.csr 文件,把裡面的文本內容複製粘貼到頁面的表單里即可。SSL 證書商會根據你的功能變數名稱發送一封驗證郵件到功能變數名稱註冊者的Email(所以你要提前註意你的功能變數名稱註冊的Email地址是什麼,如果是錯誤的話需要先修正,否則收不到驗證Email)。這個過程可能需要幾分鐘或者幾小時,收到驗證Email之後點擊裡面的鏈接地址就完成私鑰簽名了;
5.將官方生成的證書導入到 tomcat.keystore 裡面;
登錄到你購買 SSL 的證書商,下載你的網站已簽名的證書文件,在 GoDaddy 里你下載會得到一個壓縮包,裡面放有(domain.crt,gd_bundle-g2-g1.crt,gdig2.crt)
導入的流程順序:根證書,中級證書,個人證書;
我所下載的包裡面包含:(f91dc12f8b1fb94e.crt,gd_bundle-g2-g1.crt,gdig2.crt)
所以根證書是:gd_bundle-g2-g1.crt 中級證書:gdig2.crt 個人證書:f91dc12f8b1fb94e.crt
請註意:在預設安裝證書時,到最後安裝個人證書會提示:keytool error: java.lang.Exception: Failed to establish chain from reply
解決方法:原因是官方下載的根證書與中級證書可能是過期,你到它的repository里找到對應名稱的根證書下載覆蓋
6.導入證書:
1 usr/java/jre/bin/keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file gd_bundle-g2-g1.crt 2 中級證書 3 /usr/java/jre/bin/keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -file gdig2.crt 4 個人證書 5 /usr/java/jre/bin/keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file f91dc12f8b1fb94e.crt
7.tomcat 配置server.xml ,先在tomcat 目錄下麵新建一個ssl 文件夾存放tomcat.keystore 文件,再在新建一個/var/APP目錄做HTTPS 虛擬目錄;
1 <Service name="CatalinaApp"> 2 <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" 3 maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 4 clientAuth="false" sslProtocol="TLS" 5 keystoreFile="/usr/local/tomcat/ssl/tomcat.keystore" 6 keystorePass="keystore密碼"/> 7 8 <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" /> 9 <Engine name="CatalinaApp" defaultHost="localhost"> 10 <Realm className="org.apache.catalina.realm.LockOutRealm"> 11 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 12 resourceName="UserDatabase"/> 13 </Realm> 14 15 <Host name="localhost" appBase="/var/APP/" 16 unpackWARs="true" autoDeploy="true"> 17 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 18 prefix="APP_access_log." suffix=".txt" 19 pattern="%h %l %u %t "%r" %s %b" /> 20 21 </Host> 22 </Engine> 23 </Service>
8.啟動tomcat,添加防火牆埠,測試