Try   HackMD

Glassfish 搭配let's encrypt及安裝ssl憑證

tags: CAS, Glassfish Server SSL Setting, keytool

前言:

此前由於是自行產生簽證,在實務面上是不可能通過安全性檢驗,因此此篇會記錄如何使用let's encrypt產生憑證後,該如何安裝到glassfish上!

大致流程:

  • 先到let's encrypt申請憑證,申請過程請參考其他網路教學,當申請通過之後,應該會拿到三個檔案,分別為: ca_bundle.crt(根憑證,也叫CA)、certificate.crt(CA full path憑證)、private.key(私鑰)
  • 將這三樣透過openssl轉化為pkcs12檔
  • 將pkcs12檔轉換成jks檔
  • 將最後的jks檔匯入glassfish預設的keystore.jks檔案內
  • 設定glassfish domain.xml
  • 重新啟動server

1. 將第三方型的憑證轉化為pkcs12檔

openssl pkcs12 -export -out glassfish_apis_syscom.p12 -inkey private.key -in certificate.crt -certfile ca_bundle.crt -passout pass:changeit -name glassfish_apis_syscom
  • 重點提醒: 這邊的-name很重要,因為glassfish配置會需要簽證的alias,因此這邊一定要給。此外,由於glassfish的簽證密碼一定要和他master password完全一致,如果不想修改glassfish的master password,這邊簽證的密碼請務必設定成"changeit"。

2. 將pkcs12檔轉換成jks檔

keytool -importkeystore -srckeystore glassfish_apis_syscom.p12 -srcstoretype pkcs12 -srcstorepass changeit -dest storetype jks -destkeystore glassfish_apis_syscom.keystore -alias glassfish_apis_syscom
  • 重點提醒: 這邊的-alias需和上方的-name參數設定的一致,並且設定密碼也為changeit

3. 將jks檔匯入glassfish預設的keystore.jks

keytool -importkeystore -srckeystore glassfish_apis_syscom.keystore -destkeystore keystore.jks

4. 設定glassfish domain.xml

  • 請到glassfish安裝路徑/glassfish/domains/domain1/config/domain.xml

  • 若是有自行新增domain,則請至該對應的domain,domain1是glassfish預設的domain

  • 接著找到server-config底下的network-config,原本的http-listener-1是預設給http通道用的,http-listener-2是給https用的,但因目前網頁環境用的都是聽http-listener-1的80 port。因此,我們需要調整的是http-listener-1,而不是http-listener-2,並且加上<ssl classname="com.sun.enterprise.security.ssl.GlassfishSSLImpl" cert-nickname="glassfish_apis_syscom"></ssl>這邊的nickname鑰跟前面步驟產生憑證的alias一致!

  • 重點提醒: 若是透過4848 port進去的admin管理頁面想去變更http-listener-1讓他啟動security,但因為會少了<ssl></ssl>tag的關係,想切到ssl的頁面去變更certificate alias並儲存時會一直產生error,因此請直接修改domain.xml!

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

5. 最後請重新啟動glassfish讓他生效

請到glassfish安裝路徑/glassfish4.1.2/glassfish/bin/,並且輸入以下指令:

sh stopserv sh asadmin start-domain