[Grails]在Tomcat環境下使用ssl憑證配置

為了網站的訊息傳輸安全性,尤其是當涉及金流、線上刷卡的服務時,一般網站會使用加密的HTTP(也就是HTTPS)來傳輸資料,如此一來就可以防止中間人竊取資料,這篇文章簡單的介紹一下在Grails+Tomcat+Linux環境下,如何建立設定HTTPS的環境。

主要步驟如下:
1.產生憑證金鑰(.keystore)
2.複製金鑰到Tomcat目錄
3.設定Tomcat的server.xml
4.修改Grails應用程式的web.xml設定

以下詳細描述各步驟

1.產生憑證金鑰(.keystore)

因為是要給Tomcat使用的金鑰,所以這裡就使用Java內建的keytool工具
在命令列下輸入以下指令keytool -genkey”
然後跟著指示依序輸入以下資料:
輸入 keystore 密碼:
重新輸入新密碼:
您的名字與姓氏為何?
  [Unknown]:
您的編制單位名稱為何?
  [Unknown]:  
您的組織名稱為何?
  [Unknown]:
您所在的城市或地區名稱為何?
  [Unknown]: 
您所在的州及省份名稱為何?
  [Unknown]:  
該單位的二字國碼為何
  [Unknown]:
CN=Test, OU=Unknown , O=Unknown , L=Hsinchu, ST=Taiwan, C=Unknown 正確嗎?
  [否]:  Y

輸入 <mykey> 的主密碼
        (RETURN 如果和 keystore 密碼相同):
重新輸入新密碼:

其中比較重要的是密碼部分,這個密碼會在後面Tomcat設定時用到

2.複製金鑰到Tomcat目錄

完成上述步驟後,會產生.keystore檔案,將該檔案複製到tomcat/webapps目錄下

3.設定Tomcat的server.xml

開啟tomcatconfigserver.xml,將以下這段程式碼打開,並且加上keystoreFile與keystorePass兩個屬性後儲存即可,需要重新啟動tomcat才可以讓設定生效

<Connector port="8443″ protocol="HTTP/1.1″ SSLEnabled="true"
 maxThreads="150″  scheme="https" secure="true"
 clientAuth="false" sslProtocol="TLS" keystoreFile="webapps/.keystore"
 keystorePass="[密碼]" />

4.修改Grails應用程式的web.xml設定

要在Grails專案裡面設定web.xml,需先要執行grails install-templates指令,將web.xml取出後,手動設定安全連線的部份,執行指令後會在/src/templates/war/目錄下產生web.xml檔案,開啟該檔案後,新增以下設定資料:

<security-constraint>
<web-resource-collection>
<http-method>GET</http-method>
<http-method>POST</http-method>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

之後產生war檔後deploy到tomcat就算完成了。

可以輸入以下網址驗證https是否成功
https://localhost:8443/PROJECT 或是輸入 http://localhost:8080/PROJECT

不過因為憑證是自己建立,所以第一次進到網站的使用者,都會出現以下畫面,必須要按同意繼續,才可以瀏覽網站,為了解決這問題可以透過購買憑證的方式來解決,這部份等試出在在與大家分享。

有興趣者,可以先考慮以下文章

[筆記] SSL 憑證購買記
添加 GoDaddy SSL 证书到你的网站

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *