Tomcat 8.5 配置 SSL 證書

liuhh發表於2017-06-14

申請的是阿里雲的免費證照,下載tomcat版的證照檔案 裡面有4個檔案分別是: xxxx.key、xxxx.pem、xxxx.pfx、password.txt

根具阿里雲上提供的配置說明如下:

Tomcat支援JKS格式證照,從Tomcat7開始也支援PFX格式證照,兩種證照格式任選其一。
檔案說明:

  1. 證照檔案xxxx.pem,包含兩段內容,請不要刪除任何一段內容。

  2. 如果是證照系統建立的CSR,還包含:證照私鑰檔案xxxx.key、PFX格式證照檔案xxxx.pfx、PFX格式證照密碼檔案pfx-password.txt。
    1、證照格式轉換

在Tomcat的安裝目錄下建立cert目錄,並且將下載的全部檔案拷貝到cert目錄中。如果申請證照時是自己建立的CSR檔案,附件中只包含xxxx.pem檔案,還需要將私鑰檔案拷貝到cert目錄,命名為xxxx.key;如果是系統建立的CSR,請直接到第2步。
到cert目錄下執行如下命令完成PFX格式轉換命令,此處要設定PFX證照密碼,請牢記:
openssl pkcs12 -export -out xxxx.pfx -inkey xxx.key -in xxxx.pem
2、PFX證照安裝
找到安裝Tomcat目錄下該檔案server.xml,一般預設路徑都是在 conf 資料夾中。找到 <Connection port=”8443″ 標籤,增加如下屬性:
keystoreFile=”cert/xxxx.pfx”
keystoreType=”PKCS12″

此處的證照密碼,請參考附件中的密碼檔案或在第1步中設定的密碼

keystorePass=”證照密碼”

完整的配置如下,其中port屬性根據實際情況修改:
<Connector port=”8443″

protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/xxxx.pfx"
keystoreType="PKCS12"
keystorePass="證照密碼"
clientAuth="false"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>

3、JKS證照安裝(幫助)
( 1 ) 使用java jdk將PFX格式證照轉換為JKS格式證照(windows環境注意在%JAVA_HOME%/jdk/bin目錄下執行)
keytool -importkeystore -srckeystore xxxx.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -deststoretype JKS
回車後輸入JKS證照密碼和PFX證照密碼,強烈推薦將JKS密碼與PFX證照密碼相同,否則可能會導致Tomcat啟動失敗。
( 2 ) 找到安裝 Tomcat 目錄下該檔案Server.xml,一般預設路徑都是在 conf 資料夾中。找到 <Connection port=”8443″ 標籤,增加如下屬性:
keystoreFile=”cert/your-name.jks”
keystorePass=”證照密碼”
完整的配置如下,其中port屬性根據實際情況修改:
<Connector port=”8443″

protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/your-name.jks"
keystorePass="證照密碼"
clientAuth="false"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>

( 注意:不要直接拷貝所有配置,只需新增 keystoreFile,keystorePass等引數即可,其它引數請根據自己的實際情況修改 )
4、 重啟 Tomcat。
5、 通過 https 方式訪問您的站點,測試站點證照的安裝配置,如遇到證照不信任問題,請檢視相關文件。

以上是阿里雲上提供的文件。 我安裝的是Tomcat8,和說明上的出入較大,費了一些功夫,因為我下載的是系統簽名的證照,也就是隻關注第1、2步就可以了。下面說一下我走過的坑

(1)在Server.xml中可以找到有兩個Connector 埠為8843的註釋, 一種是使用Http11NioProtocol 另一種是Http11AprProtocol , 根據註釋可我們使用第一種。

(2)keystoreFile檔案路徑的配置,如果按照說明裡面的配置,會提示找不到檔案。因此我配置了絕對地址:D:/apache-tomcat-8.5.15/cert/xxxx.pfx . 可以把證照放到config目錄下,配置成conf/xxxx.pfx就行了。

(3)tomcat8 配置ssl的方式是有所改變的,多了SSLHostConfig、Certificate標籤,因此百度上的配置大部分都是不適用的,tomcat啟動是會報錯。https://tomcat.apache.org/tom… 這個連結裡面有配置ssl的一些屬性。基本配置如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/xxx.pfx"
                         certificateKeystoreType="PKCS12" certificateKeystorePassword="xxx" />
        </SSLHostConfig>
    </Connector>

tomcat配置java自簽名證照:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/httpsTest.keystore"
                         certificateKeystoreType="JKS" certificateKeystorePassword="123456" />
        </SSLHostConfig>
    </Connector>

其中keystore的密碼和證照的密碼要一樣

相關文章