Tomcat7升級Https

Andy Liu
4 min readSep 2, 2019

--

最近碰到Tomcat要升級Https需求,希望升級後能通過SSLLAB的A級評分,首先需要申請SSL憑證來啟用Https,以下是這次的做法,趁遺忘前趕快筆記下來。

申請SSL憑證

升級HTTPS首先需要一個SSL憑證,我們這次使用SSL-FOR-FREE來申請免費憑證來做測試。如何申請可以參考: 免費SSL憑證申請。我是利用Manual Verification來做驗證,申請完成後會拿到下面這三個檔:

  • certificate.crt
  • ca_bundle.crt
  • private.key

建立jks檔

因為tomcat7只支援JKS, PKCS11 or PKCS12格式的keystores,詳細請看官網說明@Configuration,所以我們要進行合併,接下來會以JKS檔做為範例:

  • 主機安裝openssl: 此文章OS為Windows環境,詳細安裝請參考此篇
  • 上傳這三個檔案certificate.crtca_bundle.crtprivate.key至主機(e.g. C:\Users\Desktop\SSL\)。
  • 把openssl加進環境變數,方便等等可以呼叫。
  • 打開cmd,先移到三個檔案位置並輸入下面指令
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca_bundle.crt
  • 輸入密碼及驗證
Enter Export Password: password
Verifying — Enter Export Password: password
  • 透過上面的指令會產生一個certificate.pfx檔。cmd移動位置到jdk位置
    (e.g. C:\Program Files\Java\jdk1.8.0_221\bin\),輸入下列指令生成JKS檔,記得更改這些東西: pfx檔路徑、剛剛設定的password、jks建立位置,成功後會得到一個keystore.jks檔:
keytool -importkeystore -srckeystore “C:\Users\Desktop\SSL\certificate.pfx” -srcstorepass password -srcstoretype pkcs12 -destkeystore “C:\Users\Desktop\SSL\keystore.jks” -deststoretype jks -deststorepass password
  • 完成jks檔建成後,接下來要更改Tomcat設定,打開tomcat/conf裡的server.xml,uncomment下面這一個connector,接著更改jks路徑以及前面設定的password,儲存後重啟Tomcat,就可以看到綠色鎖頭啦~
<Connector
protocol=”org.apache.coyote.http11.Http11NioProtocol”
port=”443" maxThreads=”500"
scheme=”https” secure=”true” SSLEnabled=”true”
keystoreFile=”C:\Users\Desktop\SSL\keystore.jks” keystorePass=”password
clientAuth=”false” sslEnabledProtocols=”TLSv1.2"
ciphers=”TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
/>

P.S. Let’s Encrypt的SSL憑證雖然免費但效期只有三個月,所以每三個月要記得進行更新,不然就是向信任的廠商購買憑證($$$)。

--

--