Sun Java System Messaging Server 6 2005Q4 管理指南

驗證私密金鑰和公開金鑰

在 Communications Express Mail 使用私密或公開金鑰之前,必須先通過驗證測試 (如圖 20–2 中所示)。本小節其餘部分說明對照 CRL 檢查公開金鑰憑證的詳細資訊。

圖 20–2 驗證私密金鑰和公開金鑰

圖形顯示驗證私密金鑰和公開金鑰的流程圖。

尋找使用者的私密金鑰或公開金鑰

如果 Communications Express Mail 使用者具有多個私密公開金鑰對和多個電子郵件位址 (主要、替代或別名位址),則這些使用者的金鑰可能在其位址中是相關的。此時,S/MIME applet 必須為了驗證而尋找所有金鑰。使用 smime.conf 檔案中的 usercertfilter 參數定義在對照 CRL 檢查公開金鑰憑證時為金鑰所有者建立郵件位址清單的篩選器。請參閱smime.conf 檔案的參數中的 usercerfilter,以取得更多資訊。

何時對照 CRL 檢查憑證?

憑證撤銷清單或 CRL,是已撤銷憑證清單,由核發金鑰組和憑證的 CA 維護。啟用 CRL 檢查後,只要憑證請求查看憑證是否已被撤銷,系統就會檢查 CRL。

如果 smime.conf 檔案中的 crlenable 設定為 1,則在找到未過期的金鑰之後執行 CRL 測試。對照 CRL 檢查公開金鑰憑證。每個 CA 僅有一個 CRL,但是同一 CRL 可以位於不同的位置。

S/MIME applet 向 Messaging Server 傳送請求之後,Messaging Server 會對照 CRL 檢查憑證。公開金鑰憑證用於驗證公開金鑰。由於私密金鑰是秘密保存的,且只有所有者才能使用,因此無法直接對照 CRL 檢查私密金鑰。若要確定私密金鑰是否正常,需要使用金鑰對的公開金鑰憑證。如果公開金鑰憑證通過 CRL 測試,則相關聯的私密金鑰也會通過測試。

憑證的撤銷可能是由於多種原因,例如該憑證的所有者離開了組織或遺失了智慧卡。

在以下三種情況下會對照 CRL 檢查憑證︰

存取 CRL

憑證不包含或包含多個 URL,亦稱為發行點,Messaging Server 使用這些來查找 CRL。如果憑證無 CRL URL,則無法對照 CRL 檢查該憑證,且在不知道該金鑰的真實狀態下使用私密金鑰或公開金鑰來簽名或加密郵件。

如果 Messaging Server 嘗試所有可用的 URL 後仍找不到或無法獲得 CRL 的存取權,則視憑證狀態為未知。revocationunknown 的設定決定是否使用處於不明的狀態之私密金鑰或公開金鑰。

如果每個 CA 僅支援一個 CRL ,則位於不同位置的同一 CRL 可能會產生多個副本,並反映在使用者的公開金鑰憑證的不同 URL 中。Messaging Server 會嘗試憑證的所有 URL 位置,直到獲得 CRL 的存取權。

透過定期從 CA 下載目前 CRL 至需要的位置,您可以管理 CRL 的多個副本以獲得最佳存取。無法變更憑證內嵌的 URL 時,您可以重新導向 Messaging Server,以透過將憑證中的 URL 對映至新的包含 CRL 資訊的 URL 來使用新的 CRL 位置。 使用以下語法在 LDAP 目錄中建立一個或多個對映定義清單 (請參閱表 20–3 中的 crlmappingurl)︰


msgCRLMappingRecord=url_in_certificate==new_url[|url_login_DN|url_login_password]

url_in_certificate 是一個 URL,位於包含用於查找 CRL 的舊資訊之憑證中。new_url 是包含新 CRL 資訊的新 URL。url_login_DNurl_login_password 是可存取 new_url 的項目之 DN 和密碼。這兩項均具有可選擇性,並且指定後將僅用於新的 URL 存取。

如果 DN 和密碼無效,則 LDAP 存取會被拒絕並且不再嘗試重試具有其他憑證。這些登入憑證僅對 LDAP URL 有效。如果使用 smmime.conf 中的 crlurllogindncrlurlloginpw,則無需在對映記錄中指定登入 DN 和密碼。請參閱使用憑證存取公開金鑰、CA 憑證和 CRL 的 LDAP

僅允許一個對映層。可以將憑證中不同的 URL 對映至同一個新的 URL,但不能將一個憑證 URL 指定給多個新的 URL。例如,以下對映清單無效︰

msgCRLMappingRecord=URL12==URL45
msgCRLMappingRecord=URL12==URL66
msgCRLMappingRecord=URL12==URL88
msgCRLMappingRecord=URL20==URL90
msgCRLMappingRecord=URL20==URL93

以下範例為正確的對映清單︰

msgCRLMappingRecord=URL12==URL45
msgCRLMappingRecord=URL14==URL66
msgCRLMappingRecord=URL88==URL66
msgCRLMappingRecord=URL201==URL90
msgCRLMappingRecord=URL202==URL93

在 LDAP 目錄中建立對映定義後,請使用 smime.conf 檔案中的 crlmappingurl 指定查找這些對映定義的目錄資訊。請參閱smime.conf 檔案的參數

代理伺服器和 CRL 檢查

如果系統在用戶端應用程式和 Messaging Server 之間使用代理伺服器,則 CRL 檢查會被阻斷,即使正確配置了 S/MIME applet 來執行 CRL 檢查。如果發生這種問題,Communications Express Mail 使用者將收到警示有效金鑰憑證處於已被撤銷或未知狀態的錯誤訊息。

以下條件會導致這種問題的發生︰

若要解決此問題,您可以執行以下動作︰

  1. 將用戶端機器和代理伺服器之間的通訊連結設置為具有 SSL 的安全連結,並保持所有配置值不變。或者

  2. 不保護通訊連結,將 checkoverssl 設定為 0

如需更多資訊,請參閱使用 SSL 保護網際網路連結

使用失時效的 CRL

S/MIME applet 向 Messaging Server 傳送請求之後,Messaging Server 會對照 CRL 檢查憑證。Messaging Server 將 CRL 的副本下載至磁碟並使用該副本檢查憑證,而非在每次檢查憑證時都將 CRL 下載至記憶體。每個 CRL 都具有下次更新欄位,用於指定應該使用較新 CRL 版本的日期。可以將下次更新的日期視為使用 CRL 中的過期日期或時間限制。超過其下次更新日期的 CRL 均被視為舊的或失時效,並會觸發 Messaging Server 在下次檢查憑證時下載 CRL 的最新版本。

S/MIME applet 每次請求對照 CRL 檢查憑證時,Messaging Server 均會執行以下動作︰

  1. 將目前日期與 CRL 的下次更新日期相比較。

  2. 如果 CRL 已失時效,Messaging Server 將會下載 CRL 的最新版本以替代磁碟上失時效的 CRL,然後繼續進行檢查。但是,如果找不到或無法下載較新的 CRL,則使用 smime.conf 檔案中的 crlusepastnextupdate 值決定下一步。

  3. 如果 crlusepastnextupdate 設定為 0,則不使用失時效的 CRL,且問題憑證處於不明狀態。S/MIME applet 使用 smime.conf 中的 revocationunknown 值決定下一步︰

    1. 如果 revocationunknown 設定為 ok,則視憑證為有效,且使用私密金鑰或公開金鑰簽名或加密郵件。

    2. 如果 revocationunknown 設定為 revoked,則視憑證為無效,且不使用私密金鑰或公開金鑰簽名或加密郵件,同時快顯式錯誤訊息會警示郵件使用者不能使用該金鑰。

    如果 crlusepastnextupdate 設定為 1,則 S/MIME applet 繼續使用此失時效的 CRL,這樣做不會中斷 Communications Express Mail 內的處理,但將會寫入一條訊息至 Messaging Server 記錄檔以警示此情況。

對照 CRL 檢查憑證時,此系列的事件會繼續發生。只要 Messaging Server 可以及時下載較新版本的 CRL,並且視 smime.conf 檔案中的設定而定,郵件處理會不中斷地進行。定期檢查 Messaging Server 記錄,查看是否存在重複的訊息表示正使用失時效的 CRL。如果無法下載較新的 CRL,則需要研究無法存取的原因。

確定要使用的郵件時間

timestampdelta 參數主要用於︰

  1. 處理郵件耗時甚久才到達目標的情況。這種情況下,寄件者的金鑰可能會被視為無效金鑰,儘管傳送郵件時該金鑰是有效的。

  2. 限制郵件的傳送時間的可信度,因為傳送時間可以偽造。

與每封郵件相關的時間有兩個︰


備註 –

按一下郵件 [寄件者] 欄位右側的三角形圖示可檢視郵件標頭詳細資訊。


傳送郵件時有效的憑證在郵件到達目標時可能已被撤銷或過期。如果發生這種情況,在檢查憑證有效性時,應該使用傳送時間還是接收時間?使用傳送時間將驗證傳送郵件時憑證是否有效。但自動使用傳送時間不會將郵件耗時甚久才到達目標這一事實納入考量,在這種情況下,最好使用接收時間。

使用 smime.conf 檔案中的 timestampdelta 參數可以影響 CRL 檢查使用的時間。將此參數設定為正整數,表示秒數。如果接收時間減去 timestampdelta 值為傳送時間之前的時間,則使用傳送時間。否則,使用接收時間。timestampdelta 值越小,使用接收時間的機會越多。如果未設定 timestampdelta,則始終使用接收時間。請參閱表 20–3 中的 timestampdelta

存取 CRL 的疑難

由於多種原因 (如網路或伺服器問題),當 Messaging Server 嘗試對照 CRL 檢查憑證時,CRL 可能不可用。可以使用 smime.conf 檔案中的 crlaccessfail 參數管理 Messaging Server 嘗試存取 CRL 的頻率,讓它可以有時間執行其他作業,而不是不停地嘗試存取該 CRL。

使用 crlaccessfail 定義以下各項︰

請參閱表 20–3 中的 crlaccessfail,以取得參數語法和範例。

憑證已被撤銷時

如果公開金鑰的憑證與 CRL 上的任何項目均不匹配,則使用私密金鑰或公開金鑰簽名或加密外寄的郵件。如果憑證與 CRL 上的某個項目匹配,或者憑證處於不明的狀態,則視私密金鑰或公開金鑰為已撤銷。依預設,Communications Express Mail 不使用具有已被撤銷憑證的金鑰來簽名或加密外寄郵件。如果收件者讀取郵件時,簽名郵件的私密金鑰已被撤銷,則收件者會接收到表明此簽名不受信任的警告訊息。

如果需要,可以使用 smime.conf 檔案中的以下參數變更所有已撤銷憑證的各種預設策略︰