Posted on

Tomcat 安裝 SSL 憑證

如果拿到的憑證是轉好的 .jks 檔案,這時候因為方便整理的關係我將這個.jks 檔案放到 conf 底下,然後只需要到 Tomcat 目錄下的 conf / server.xml 去做修改就好。

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
	       keystoreFile="conf/gss.jks" keystorePass="******"
               clientAuth="false" SSLEngine="on" />

如果都沒改過的話,這段原本應該是註解起來的。然後加上 keystoreFile 跟 keystorePass,就設定好了,重新啟動 Tomcat 就可以用 https 連上網站了

如果拿到的憑證是 .crt檔跟.key檔,這時候就比較麻煩了,需要自己去做加密,我這邊會介紹.p12 跟.jks,雖然有些許設定上的不同,但其實加密成.p12 或是.jks 都可以在 Tomcat 執行。 

.p12 檔

首先要先下載 OpenSSL 這邊提供 Windows 下載的版本,跟安裝教學如下:

  1. OpenSSL For Windows 載點 : http://gnuwin32.sourceforge.net/packages/openssl.htm
  2. OnenSSL 安裝教學 : https://www.sslbuyer.com/index.php?option=com_content&view=article&id=128:install-openssl-win7&catid=25:knowledge-news&Itemid=2595

下載並設定好之後就可以 OpenSSL 的指令了,首先將 .crt檔跟.key檔用命令提示字元轉成.p12 語法如下:

openssl pkcs12 -export -in All.cer -inkey openservices.aopen.com.01.key -out openservices.aopen.co-v1.p12

就成功加密出 .p12 檔案了,這時候可以直接上 Tomcat 設定了,設定如下。

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
	       keystoreFile="conf/gss.p12" keystorePass="******" keystoreType="pkcs12"
               clientAuth="false" SSLEngine="on" />

這邊需要注意的點除了 keystoreFile 跟 keystorePass 還多了 keystoreType=”pkcs12″ 要去做設定,然後重啟 Tomcat 就成功囉。

.jks 檔

如果不想在 Tomcat 多做設定的話,可以再把 .p12 轉成 .jks ,這時候就要透過 Java KeyTool 工具。

首先需要下載 Java SDK 下載完成後,需要再 Java 底下的 Bin 才能執行 KeyTool ,語法如下 :

/usr/bin/keytool -importkeystore -srckeystore openservices.aopen.com.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore openservices-201607-201907-v2.keystore

就能夠轉出 .jks 囉,Tomcat 的設定就如最上面那樣既可。

總結

其實.p12 跟.jks 都能在 Tomcat 下執行,但.p12 需要做型態設定 Tomcat 才能順利的去讀取,.jks 則需要.p12 再用 Java KeyTool 去轉,這邊就看個人取捨了。

這邊也提供將.jks 轉回 .crt 跟.key 的方法

https://serverfault.com/questions/715827/how-to-generate-key-and-crt-file-from-jks-file-for-httpd-apache-server

名詞解釋
  • .key格式:密鑰文
  • .crt格式:證書文件,包含公鑰提供者信息,但不包含公鑰
  • .jks格式 :定義了包含私鑰與公鑰證書的文件格式,是 Java 默認的格式
  • .p12 又稱PKCS12:定義了包含私鑰與公鑰證書的文件格式,其中私鑰採密碼保護
  • PKCS(Public Key Cryptography Standards)是由RSA公司制定的一組關於公鑰加密的標準