在CentOS 1804 中的 Tomcat 9 設定 SSL( https ) 加密 (多域名加密,阿里雲 SSL+ 騰訊雲 SSL)
阿新 • • 發佈:2018-11-09
相關文章:
在CentOS 1804 中設定 Apache Tomcat 9.0.12 開機自啟
準備環境:
- CentOS(版本沒有要求,筆者使用CentOS 1804)。
- Tomcat 9(8.5或9,7/8略有問題,以後再討論,筆者使用 tomcat 9),相關配置見本文開始或結束的相關文章。
- 擁有至少2個域名(兩個子域名就可以)。
- 阿里雲SSL+騰訊雲SSL(為了有代表性,所以舉了兩個不同的SSL)。
申請地址:
阿里雲(一個阿雲帳戶最多簽發20張免費證書):
騰訊雲(同一主域最多隻能申請20張亞洲誠信品牌免費型DV版SSL證書):https://cloud.tencent.com/product/ssl
- 本人使用的SSL:
- 阿里雲SSL:https.wimcn.cn
- 騰訊雲SSL:a.wimcn.cn
- 首先將兩個域名解壓到tomcat9的根路徑下,相關位置如下:
[[email protected] tomcat9]# ls a.wimcn.cn BUILDING.txt CONTRIBUTING.md lib logs README.md RUNNING.txt webapps bin conf https.wimcn.cn LICENSE NOTICE RELEASE-NOTES temp work
- 首先配置一個騰訊雲SSL(較簡單)(a.wimcn.cn):
修改tomcat根目錄下的conf資料夾下的server.xml檔案:將 <Connector port="8080" protocol="HTTP/ connectionTimeout=" redirectPort="8443" /> 修改為: <Connector port="80" protocol="HTTP/ connectionTimeout=" redirectPort="443" />
釋放下面的註釋 <!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" /> </SSLHostConfig> </Connector> --> 修改為: <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="a.wimcn.cn"> <SSLHostConfig hostName="a.wimcn.cn"> <Certificate certificateKeystoreFile="a.wimcn.cn/Tomcat/a.wimcn.cn.jks" type="RSA" certificateKeystorePassword="密碼" /> </SSLHostConfig> </Connector> 說明: hostName="",為該聯結器對應的域名,必填。 defaultSSLHostConfigName="",這是預設域名,無論是單域名SSL,還是多域名SSL都要設定,必填。 certificateKeystoreFile="",是騰訊雲SSL聯結器,筆者使用的是相對位置,相對於tomcat根目錄的。必填。 certificateKeystorePassword="",是密碼,如果申請騰訊雲SSL證書時有填寫私鑰密碼,金鑰庫密碼即私鑰密碼,否則填寫金鑰庫密碼檔案中的密碼,和騰訊雲SSL聯結器在相同資料夾下,必填。
將 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 修改為: <Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
如果有需要,請閱讀騰訊雲SSL證書安裝指引:https://cloud.tencent.com/document/product/400/4143
- 開放80/443埠:
檢視防火牆是否開啟:
下面說明防火牆開啟了:
下面說明防火牆沒有開啟:[[email protected] conf]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-09-21 03:21:59 CST; 56min ago Docs: man:firewalld(1) Main PID: 767 (firewalld) CGroup: /system.slice/firewalld.service └─767 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Sep 21 03:21:59 CSDNBolg systemd[1]: Starting firewalld - dynamic firewall daemon... Sep 21 03:21:59 CSDNBolg systemd[1]: Started firewalld - dynamic firewall daemon.
開啟防火牆:[[email protected] conf]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since Fri 2018-09-21 04:19:56 CST; 1s ago Docs: man:firewalld(1) Process: 767 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS) Main PID: 767 (code=exited, status=0/SUCCESS) Sep 21 03:21:59 CSDNBolg systemd[1]: Starting firewalld - dynamic firewall daemon... Sep 21 03:21:59 CSDNBolg systemd[1]: Started firewalld - dynamic firewall daemon. Sep 21 04:19:55 CSDNBolg systemd[1]: Stopping firewalld - dynamic firewall daemon... Sep 21 04:19:56 CSDNBolg systemd[1]: Stopped firewalld - dynamic firewall daemon.
檢視已開放的埠:[[email protected] conf]# systemctl start firewalld
開通80/443埠:[[email protected] conf]# firewall-cmd --list-ports 8080/tcp
重啟防火牆:[[email protected] conf]# firewall-cmd --zone=public --add-port=80/tcp --permanent success [[email protected] conf]# firewall-cmd --zone=public --add-port=443/tcp --permanent success
檢視已開放的埠:[[email protected] conf]# firewall-cmd --reload success
重啟tomcat:[[email protected] conf]# firewall-cmd --list-ports 8080/tcp 80/tcp 443/tcp
由於本人測試環境為虛擬機器,地址為192.168.113.141,修改本機host為:[[email protected] conf]# systemctl restart tomcat9.service
訪問https://a.wimcn.cn
至此,配置一個騰訊雲SSL證書的域名就完成了。 - 配置一個阿里雲SSL(https.wimcn.cn)
進入阿里雲SSL資料夾下(已重新命名):
證書格式轉換,此處要設定PFX證書密碼,請牢記(輸入密碼時不顯示):[[email protected] https.wimcn.cn]# ls https.wimcn.cn.key https.wimcn.cn.pem https.wimcn.cn.pfx https.wimcn.cn.txt
PFX證書安裝:[[email protected] https.wimcn.cn]# openssl pkcs12 -export -out https.wimcn.cn.pfx -inkey https.wimcn.cn.key -in https.wimcn.cn.pem Enter Export Password: Verifying - Enter Export Password:
如果有需要,請在後買阿里雲SSL(免費)證書後,在SSL證書控制檯(https://www.aliyun.com/product/cas)檢視看相關資訊。在 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="a.wimcn.cn"/Connector> 中新增: <SSLHostConfig hostName="https.wimcn.cn"> <Certificate certificateKeystoreFile="https.wimcn.cn/https.wimcn.cn.pfx" type="RSA" certificateKeystoreType="PKCS12" certificateKeystorePassword="密碼" /> </SSLHostConfig> 說明: hostName="",為該聯結器對應的域名,必填。 certificateKeystoreFile="",是阿里雲SSL聯結器,筆者使用的是相對位置,相對於tomcat根目錄的。必填。 certificateKeystorePassword="",是密碼,上一步證書格式轉換時的密碼,必填。 certificateKeystoreType="PKCS12",固定,不可改,必填。
另外說明,
訪問https://https.wimcn.cn
- 補充說明,阿里雲SSL配置Tomcat還有JKS證書安裝方式,上面講的是PFX證書安裝,兩者選其一即可。
進入阿里雲SSL資料夾下(已重新命名):
證書格式轉換,此處要設定PFX證書密碼,請牢記(輸入密碼時不顯示):[[email protected] https.wimcn.cn]# ls https.wimcn.cn.key https.wimcn.cn.pem https.wimcn.cn.pfx https.wimcn.cn.txt
使用java jdk將PFX格式證書轉換為JKS格式證書,輸入JKS證書密碼和PFX證書密碼,強烈推薦將JKS密碼與PFX證書密碼相同,否則可能會導致Tomcat啟動失敗。:[[email protected] https.wimcn.cn]# openssl pkcs12 -export -out https.wimcn.cn.pfx -inkey https.wimcn.cn.key -in https.wimcn.cn.pem Enter Export Password: Verifying - Enter Export Password:
JKS證書安裝:[[email protected] https.wimcn.cn]# keytool -importkeystore -srckeystore https.wimcn.cn.pfx -destkeystore https.wimcn.cn.jks -srcstoretype PKCS12 -deststoretype JKS Importing keystore https.wimcn.cn.pfx to https.wimcn.cn.jks... Enter destination keystore password: Re-enter new password: Enter source keystore password: Entry for alias 1 successfully imported. Import command completed: 1 entries successfully imported, 0 entries failed or cancelled Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore https.wimcn.cn.jks -destkeystore https.wimcn.cn.jks -deststoretype pkcs12".
如果有需要,請閱讀騰訊雲SSL證書安裝指引:https://cloud.tencent.com/document/product/400/4143在 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="a.wimcn.cn"/Connector> 中新增: <SSLHostConfig hostName="https.wimcn.cn"> <Certificate certificateKeystoreFile="https.wimcn.cn/https.wimcn.cn.jks" type="RSA" certificateKeystorePassword="密碼" /> </SSLHostConfig> 說明: hostName="",為該聯結器對應的域名,必填。 certificateKeystoreFile="",是阿里雲SSL聯結器,筆者使用的是相對位置,相對於tomcat根目錄的。必填。 certificateKeystorePassword="",是密碼,上一步證書格式轉換時的密碼(PFX證書密碼與JKS證書密碼相同),必填。
這裡就不演示了,效果一樣。
相關文章: