1. 程式人生 > >在CentOS 1804 中的 Tomcat 9 設定 SSL( https ) 加密 (多域名加密,阿里雲 SSL+ 騰訊雲 SSL)

在CentOS 1804 中的 Tomcat 9 設定 SSL( https ) 加密 (多域名加密,阿里雲 SSL+ 騰訊雲 SSL)

相關文章:

在 CentOS 1804 中手動安裝 JDK 1.8

在CentOS 1804 中設定 Apache Tomcat 9.0.12 開機自啟

在tomcat中設定http自動跳轉https


準備環境:

  1. CentOS(版本沒有要求,筆者使用CentOS 1804)。
  2. Tomcat 9(8.5或9,7/8略有問題,以後再討論,筆者使用 tomcat 9),相關配置見本文開始或結束的相關文章。
  3. 擁有至少2個域名(兩個子域名就可以)。
  4. 阿里雲SSL+騰訊雲SSL(為了有代表性,所以舉了兩個不同的SSL)。
    申請地址:
    阿里雲(一個阿雲帳戶最多簽發20張免費證書):
    https://www.aliyun.com/product/cas

    騰訊雲(同一主域最多隻能申請20張亞洲誠信品牌免費型DV版SSL證書):https://cloud.tencent.com/product/ssl

 


  1. 本人使用的SSL:
    1. 阿里雲SSL:https.wimcn.cn
    2. 騰訊雲SSL:a.wimcn.cn
  2. 首先將兩個域名解壓到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
    
  3. 首先配置一個騰訊雲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

  4. 開放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
    
    檢視已開放的埠:
    [[email protected] conf]# firewall-cmd --list-ports
    8080/tcp
    
    開通80/443埠:
    [[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
    
    檢視已開放的埠:
    [[email protected] conf]# firewall-cmd --list-ports
    8080/tcp 80/tcp 443/tcp
    
    重啟tomcat:
    [[email protected] conf]# systemctl restart tomcat9.service
    由於本人測試環境為虛擬機器,地址為192.168.113.141,修改本機host為:


    訪問https://a.wimcn.cn


    至此,配置一個騰訊雲SSL證書的域名就完成了。
  5. 配置一個阿里雲SSL(https.wimcn.cn)
    進入阿里雲SSL資料夾下(已重新命名):
    [[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:
    
    PFX證書安裝:
    在
    <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",固定,不可改,必填。
    如果有需要,請在後買阿里雲SSL(免費)證書後,在SSL證書控制檯(https://www.aliyun.com/product/cas)檢視看相關資訊。
    另外說明,

    訪問https://https.wimcn.cn

     
  6. 補充說明,阿里雲SSL配置Tomcat還有JKS證書安裝方式,上面講的是PFX證書安裝,兩者選其一即可。
    進入阿里雲SSL資料夾下(已重新命名):
    [[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:
    
     使用java jdk將PFX格式證書轉換為JKS格式證書,輸入JKS證書密碼和PFX證書密碼,強烈推薦將JKS密碼與PFX證書密碼相同,否則可能會導致Tomcat啟動失敗。:
    [[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".
    JKS證書安裝:
    在
    <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證書密碼相同),必填。
    如果有需要,請閱讀騰訊雲SSL證書安裝指引:https://cloud.tencent.com/document/product/400/4143
    這裡就不演示了,效果一樣。

相關文章:

在 CentOS 1804 中手動安裝 JDK 1.8

在CentOS 1804 中設定 Apache Tomcat 9.0.12 開機自啟

在tomcat中設定http自動跳轉https