本文章內容:
引用:https://dotblogs.com.tw/hank_blog/2018/01/31/145006
前言
公司網站最近要改走 https 協定,只需要在 Tomcat 設定一些步驟而已,可是後來發現轉換憑證也是門學問呢。
內文
產生jks檔案的指令:
keytool -genkey -alias <keystore檔的別名,例:tomcat> -keyalg RSA [-keysize 2048] -keystore <keystore檔的路徑及檔名,例:/etc/tomcat/tomcat.jks> [-validity 36500,默認3個月]
注意:過程中會有兩次需要輸入密碼的地方,第一次在一開始,第二次在最後,若放到Tomcat的話兩次密碼都要輸入一樣,但若放到JBoss的話兩次密碼可以不一樣,因為Tomcat在server.xml設定檔只設定一個密碼,而JBoss在host.xml設定檔可以設定兩個密碼。
第一次從公司 MIS 拿到的憑證是轉好的 .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 下載的版本,跟安裝教學如下:
- OpenSSL For Windows 載點 : http://gnuwin32.sourceforge.net/packages/openssl.htm
- 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
語法如下:
就成功加密出 .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 ,語法如下 :
就能夠轉出 .jks
囉,Tomcat 的設定就如最上面那樣既可。
總結
其實.p12
跟.jks
都能在 Tomcat 下執行,但.p12
需要做型態設定 Tomcat 才能順利的去讀取,.jks
則需要.p12
再用 Java KeyTool 去轉,這邊就看個人取捨了。
這邊也提供將.jks
轉回 .crt
跟.key
的方法
名詞解釋
- .key格式:密鑰文
- .crt格式:證書文件,包含公鑰提供者信息,但不包含公鑰
- .jks格式 :定義了包含私鑰與公鑰證書的文件格式,是 Java 默認的格式
- .p12 又稱PKCS12:定義了包含私鑰與公鑰證書的文件格式,其中私鑰採密碼保護
- PKCS(Public Key Cryptography Standards)是由RSA公司制定的一組關於公鑰加密的標準
參考資料