<style>
.red {
color: red;
}
</style>
# Glassfish ssl及自建domain設定
###### tags: `CAS`, `Glassfish Server SSL Setting`, `keytool`
## 前言:
由於自簽憑證需要跟網站域名相同,glassfish預設域名是domain1,若想要建立自己的domain就需要透過指令新建立才有辦法達成,以下將以sso.client1.com域名為例。
需使用檔案: 在svn
## 大致流程:
* 先自己簽發ssl所需要的證書
* 建立domain及設定
* 將憑證匯入到glassfish的cacert證書庫裡面
* deploy web project到glassfish
## 產生私鑰及簽發ssl憑證:
可透過keytool自簽憑證,<span class="red">憑證的dn必須跟網站域名設定一致,非常重要!!</span>
## 建立domain及設定
1. 打開cmd後先到`glassfish安裝位置\bin`底下,執行asadmin

2. 接著執行`create-domain sso.client1.com`(若新建立的domain不想和預設的domain1搶port占位子,可先啟動domain1再建立,建立過程就會自動挑選隨機的port),建立admin帳號密碼後即完成
## 將證書和私鑰匯入到glassfish的cacert及keystore庫裡面:
1. 簽發完畢之後,須將xxx.crt及xxx.keystore匯入到glassfish server裡面,位子會放在`glassfish安裝位置\domains\config`裡面。
例: keytool -import -alias xxx -file xxx.crt -keystore cacerts.jks(匯入憑證)
例: keytool -importkeystore -srckeystore xxx.keystore -destkeystore keystore.jks(匯入私鑰)
2. glassfish裡cacerts.jks和keystore.jks密碼預設都為changeit,<span class="red">注意: 匯入前需確認自簽憑證漢密鑰的密碼需要和cacerts.jks及keystore密碼相同,還需要跟當前domain的master password相同,才有辦法順利啟用ssl!!</span>
3. 若想更改domain master password,一樣到`bin`的路徑底下,進入`asadmin`後,輸入`change-master-password domain_name`即可變更
4. 如果有使用netbeans開發,在netbeans內部建立的glassfish server啟用ssl預設密碼都是changeit,如果有更改過domain的master password,啟動時會顯示密碼錯誤,此時如果證書和憑證都已經匯入成功,可以將master password改回changeit,這樣netbeans的server即可正常啟動的。