Sun Java System Calendar Server 6.3 管理指南

7.1 為 Calendar Server 配置 SSL

本小節包含為 Calendar Server 配置 SSL 的說明。

本小節包含以下主題:

Procedure建立憑證資料庫

閘道需要憑證,才能將它的公開金錀傳送至用戶端。憑證包含閘道的公開金鑰、與閘道憑證關聯的辨別名稱、憑證的序號或發出日期,以及憑證的過期日期。憑證是由憑證授權單位 (Certification Authority, CA) 發出,這個憑證授權單位會驗證閘道的身份。CA 是發出及管理 X.509 公開金鑰憑證及 CARL 或憑證撤銷清單 (Certification Revocation List, CRL) 的授權單位,受到一或多個使用者信任。CA 是公開金鑰基礎架構 (Public Key Infrastructure, PKI) 的基本建立區塊。另一方面,PKI 是一組用於管理憑證及公開-私密金錀對的策略、程序、伺服器平台、軟體及工作站,包括發出、維護及撤銷公開金鑰憑證的能力。

CA 會將它的名稱插入到每個它所產生的憑證及 CRL,並利用它的私密金鑰以數位方式簽名憑證。一旦您 (直接或透過憑證路徑) 確立了對 CA 的信任,便可以信任該 CA 發出的憑證。透過比較名稱,您可以輕易地識別該 CA 發出的憑證。 無論如何,它的公開金鑰都可以用來確保憑證有效。

CA 會執行四個基本 PKI 功能:

伺服器的憑證及金錀對代表伺服器身份。它們儲存在憑證資料庫中,這個憑證資料庫可以位於伺服器內部,或位於外部的可移除的硬體卡 (智慧卡)。用於 Calendar Server 的 SSL 實作需要憑證資料庫。憑證資料庫必須定義認證機構 (CA) 和用於 Calendar Server 的憑證。本小節包含概念資訊和工作資訊:

開始之前

建立憑證資料庫之前,請先熟悉以下內容:

  1. 以超級使用者的身份登入或成為超級使用者 (root)。

  2. /etc/opt/SUNWics5/config/sslpassword.conf 指定憑證資料庫密碼。

    例如:


    # echo "password file entry" 
          /etc/opt/SUNWics5/config/sslpassword.conf

    密碼檔項目的格式如下:

    內部 (軟體) 記號:密碼

  3. 建立憑證資料庫目錄。例如:


    # cd /var/opt/SUNWics5
     # mkdir alias
  4. 移至 bin 目錄,並產生憑證資料庫 (cert8.db) 和金鑰資料庫 (key3.db)。例如:


    # cd /opt/SUNWics5/cal/bin
     # ./certutil -N -d /etc/opt/SUNWics5/config
                     -f /etc/opt/SUNWics5/config/sslpassword.conf

    備註 –

    當您必須執行 certutil 公用程式時,請完全依照範例,或者查閱 certutil 說明頁面以瞭解語法。

    例如,在這種情況下,沒有指定 -d /file 資訊,請勿執行帶有 -N 選項的此公用程式。


  5. 產生預設的自我簽署的根認證機構憑證。例如:


    # ./certutil -S -n SampleRootCA -x -t "CTu,CTu,CTu"
     -s "CN=My Sample Root CA, O=sesta.com" -m 25000
     -o /etc/opt/SUNWics5/config/SampleRootCA.crt
     -d /etc/opt/SUNWics5/config
     -f /etc/opt/SUNWics5/config/sslpassword.conf -z
     /etc/passwd
  6. 產生用於主機的憑證。例如:


    # ./certutil -S -n SampleSSLServerCert -c SampleRootCA 
     -t "u,u,u"
     -s "CN=hostname.sesta.com, O=sesta.com" -m 25001
     -o /etc/opt/SUNWics5/config/SampleSSLServer.crt
     -d /etc/opt/SUNWics5/config 
     -f /etc/opt/SUNWics5/config/sslpassword.conf
     -z /etc/passwd

    其中 hostname.sesta.com 為伺服器主機名稱。

  7. 驗證憑證。例如:


    # ./certutil -V -u V -n SampleRootCA  
        -d /etc/opt/SUNWics5/config
     # ./certutil -V -u V -n SampleSSLServerCert 
       -d /etc/opt/SUNWics5/config
  8. 列出憑證。例如:


    # ./certutil -L -d /etc/opt/SUNWics5/config
     # ./certutil -L -n SampleSSLServerCert 
       -d /etc/opt/SUNWics5/config
  9. 使用 modutil 列出可用的安全模組 (secmod.db)。例如:


    # ./modutil -list -dbdir /etc/opt/SUNWics5/config
  10. 將別名檔案的所有者變更為 icsusericsgroup (或 Calendar Server 執行時將使用的使用者與群組身份)。例如:


    # find /etc/opt/SUNWics5/config -exec chown icsuser {};
     # find /etc/opt/SUNWics5/config -exec chgrp icsgroup {};

7.1.1 自我簽署的憑證

自我簽署的憑證以閘道自己的私密金鑰簽署。自我簽署的憑證不安全,但是在已簽署的憑證可供使用之前,它們可以用來測試需要憑證的應用程式。自我簽署的憑證使用自己的憑證請求做為簽名,而不是 CA 的簽名。

透過 PKI 建立自我簽署的憑證時,有十個常用的欄位,其中六個是必要的,四個是選擇性的。序號、憑證簽名演算法識別碼、憑證發行者名稱、憑證有效期、公開金鑰及主旨名稱都是必要欄位。選擇性欄位是版本編號、兩個唯一識別碼及副檔名。這些選擇性欄位只會出現在版本 2 及版本 3 的憑證中。

必要的「有效」欄位指出憑證生效的日期,以及憑證過期的日期。NSS 憑證公用程式提供的過期日期的預設值是三個月。不過,在過期日期到達之前,憑證中的有效性資料會變成無法信賴。X.509 CRL 機制會為它們發出的憑證提供狀態更新,並管理憑證過期日期。此外,CA 也會將憑證過期強制設定為一或兩年。

當憑證過期或超過有效日期時,需要更新它。更新是一種透過發出新的憑證,延伸公開金鑰憑證宣告的資料連結的有效日期之動作或程序。可以使用以下指令來驗證憑證:

-V -n certname -b validity-time -u certusage [-e] [-l] [-d certdir]

以下範例顯示如何使用指令來驗證憑證:

certutil -V -n jsmith@netscape.com -b 9803201212Z -u SR -e -l -d certdir.

憑證資料庫工具顯示類似如下的結果:

Certificate:'jsmith@netscape.com' is valid.

UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Expired certificate

UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Certificate not approved for this operation

Procedure請求與匯入來自根認證機構的憑證

以下步驟告訴您如何產生憑證請求,並將其提交至公開金鑰基礎架構 (PKI) 網站,然後匯入該憑證。這些指令假設您將憑證資料庫保存在 config 目錄中。

開始之前

憑證資料庫與密碼檔案必須同時位於相同的目錄中。這裡顯示的預設值是 config 目錄,但是您可以選擇另一個目錄,在此情況下,您必須配置不同的 path 參數,如以下程序中所示。

  1. 以超級使用者的身份登入或成為超級使用者 (root)。

  2. 移至 bin 目錄:

    # cd /opt/SUNWics5/cal/bin

  3. 使用 certutil 根據認證機構或公開金鑰基礎架構 (PKI) 網站來產生憑證請求。例如:


    # ./certutil -R -s "CN=hostname.sesta.com, 
    OU=hostname/ SSL Web Server, O=Sesta, 
    C=US" -p "408-555-1234" -o hostnameCert.req 
    -g 1024  -d /etc/opt/SUNWics5/config 
    -f /etc/opt/SUNWics5/config/sslpassword.conf  -z /etc/passwd -a

    其中 “hostname.sesta.com” 是主機名稱。

  4. 向認證機構或公開金鑰基礎架構 (PKI) 網站為 SSL Web 伺服器請求一個測試憑證。複製 hostnameCert.req 檔案的內容,並將其貼至憑證請求中。

    當您的憑證被簽署並可取得時您會收到通知。

  5. 將認證機構憑證鏈與 SSL 伺服器憑證複製至文字檔案中。

  6. 將認證機構憑證鏈匯入憑證資料庫以建立授權鏈。例如:


    # ./certutil -A -n "GTE CyberTrust Root"
        -t "TCu,TCu,TCuw" 
        -d /etc/opt/SUNWics5/config 
        -a 
        -i /export/wspace/Certificates/CA_Certificate_1.txt
        -f /etc/opt/SUNWics5/config/sslpassword.conf
    # ./certutil -A -n "Sesta TEST Root CA" 
        -t "TCu,TCu,TCuw" 
        -d /etc/opt/SUNWics5/config 
        -a 
        -i /export/wspace/Certificates/CA_Certificate_2.txt
        -f /etc/opt/SUNWics5/config/sslpassword.conf
  7. 匯入已簽署的伺服器憑證:


    # ./certutil -A -n "hostname SSL Server Test Cert"
        -t "u,u,u" -d /etc/opt/SUNWics5/config 
        -a 
        -i /export/wspace/Certificates/SSL_Server_Certificate.txt
        -f /etc/opt/SUNWics5/config/sslpassword.conf
  8. 列出憑證資料庫中的憑證:

    # ./certutil -L -d /etc/opt/SUNWics5/config

  9. ics.conf 檔案中將 SSL 伺服器暱稱配置為已簽署的 SSL 伺服器憑證,例如:“hostname SSL Server Test Cert”。

    注意 ics.conf 檔案中用於 service.http.calendarhostnameservice.http.ssl.sourceurl 參數的主機名稱應符合 SSL 憑證上的主機名稱 (假定您的系統擁有數個別名)。例如:calendar.sesta.com

Procedureics.conf 檔案中配置 SSL 參數

若要將 SSL 與 Calendar Server 配合實作,必須在 ics.conf 檔案中設定特定的參數。如果 ics.conf 檔案中沒有下表中列出的某些參數,則請在該檔案中增加這些參數,並指定其值。由於僅在系統啟動時 (發出 start-cal 時) 讀取 ics.conf,因此新值將在 Calendar Server 重新啟動後才會生效。如需這些 SSL 參數的說明,請參閱E.2.10 Calendar Server SSL 配置參數

  1. 以擁有變更配置權限的管理員身份登入。

  2. 移至 /etc/opt/SUNWics5/cal/config 目錄。

  3. 透過複製及重新命名,儲存舊的 ics.conf 檔案。

  4. 如下表中所示編輯一個或多個參數︰

    參數 

    值 

    encryption.rsa.nssslactivation

    "on"

    encryption.rsa.nssslpersonalityssl

    "SampleSSLServerCert"

    encryption.rsa.nsssltoken

    "internal"

    service.http.tmpdir

    "/var/opt/SUNWics5/tmp"

    service.http.uidir.path

    "html"

    service.http.ssl.cachedir

    "."

    service.http.ssl.cachesize

    "10000"

    local.ssldbpath

    "/etc/opt/SUNWics5/config"

    service.http.ssl.port.enable

    "yes"

    service.http.ssl.port

    "443" (預設 SSL 連接埠)


    備註 –

    而非在連接埠 "80" (HTTP 預設連接埠) 上。


    service.http.securesession

    "yes" (整個階段作業已加密)

    service.http.ssl.sourceurl

    "https://localhost:port" (提供您本地主機的名稱和 service.http.ssl.port 值。)

    service.http.ssl.ssl3.ciphers

    "rsa_red_40_md5,

    rsa_rc2_40_md5,

    rsa_des_sha,

    rsa_rc4_128_md5,

    rsa_3des_sha"

    service.http.ssl.ssl3.sessiontimeout

    "0"

    service.http.sslusessl

    "yes"

  5. 將檔案儲存為 ics.conf

  6. 重新啟動 Calendar Server 以使變更生效。

    cal-svr-base/SUNWics5/cal/sbin/start-cal