ClickOnce 和 Authenticode
Authenticode 是一項 Microsoft 技術,它會使用業界標準的加密並利用數位憑證來簽署應用程式程式碼,以便驗證應用程式發行者 (Publisher) 的真偽。藉由使用 Authenticode 進行應用程式部署,ClickOnce 可降低遭到特洛伊木馬 (Trojan Horse) 入侵的風險。特洛伊木馬是惡意的第三方誤報為來自確定且可信任來源之合法程式的病毒或其他有害程式。以數位簽章簽署 ClickOnce 部署是選擇性步驟,可確保組件和檔案未經竄改。
下列各節將說明 Authenticode 中所用之不同類型的數位憑證、如何使用憑證授權單位 (CA) 驗證憑證、時間戳記在憑證中扮演的角色,以及適用於憑證的儲存方法。
Authenticode 和程式碼簽署
「數位憑證」(Digital Certificate) 是一個檔案,其中含有密碼編譯的公開/私密金鑰組,以及中繼資料 (Metadata),而這項資料會描述憑證核發給哪位發行者以及核發憑證的代理者。
Authenticode 憑證有各種類型。而每種都是針對不同類型的簽署所設定。若為 ClickOnce 應用程式,您就必須擁有適用於程式碼簽署的 Authenticode 憑證。如果您嘗試使用另一種憑證類型 (例如數位電子郵件憑證) 簽署 ClickOnce 應用程式,它就無法運作。如需詳細資訊,請參閱程式碼簽署簡介 (英文)。
您可以用下列其中一種方式取得程式碼簽署的憑證:
從憑證廠商購買憑證
從組織中負責建立數位憑證的群組接收憑證
使用隨附於 Windows Software Development Kit (SDK) 的 MakeCert.exe 產生您自己的憑證。
如何使用憑證授權單位協助使用者
使用 MakeCert.exe 公用程式產生的憑證通常稱為「自我憑證」(Self-Cert) 或「測試憑證」(Test Cert)。這種憑證的運作方式與在 .NET Framework 中運作的 .snk 檔很類似。它僅包含一組公開/私密的密碼編譯金鑰組,但不包含發行者的可驗證資訊。您可以使用自我憑證,將具有高度信任的 ClickOnce 應用程式部署在內部網路上。不過,當這些應用程式在用戶端電腦上執行時,ClickOnce 則會它們識別為來自「未知的發行者」。根據預設,使用自我憑證簽署且部署在網際網路上的 ClickOnce 應用程式無法使用受信任的應用程式部署。
反之,如果您從某個 CA (例如,憑證廠商或企業內的部門) 接收憑證,這個憑證就會為您的使用者提供更多安全性。它不僅能識別已簽署軟體的發行者,而且還會與簽署它的 CA 聯繫,藉以驗證該識別 (Identity)。如果此 CA 不是根授權單位,Authenticode 也會「鏈結」回根授權單位,以便驗證 CA 是否獲得授權可核發憑證。如需更高的安全性,您應該盡可能使用由 CA 所核發的憑證。
如需產生自我憑證的詳細資訊,請參閱Makecert.exe (憑證建立工具)。
時間戳記
用來簽署 ClickOnce 應用程式的憑證會在特定時間長度後過期,一般是十二個月。為了不想再持續不斷地使用新憑證來重新簽署應用程式,ClickOnce 支援時間戳記。使用時間戳記簽署應用程式時,只要時間戳記有效,即使過期之後,還是會繼續接受該應用程式的憑證。這樣可下載和執行憑證過期但時間戳記有效的 ClickOnce 應用程式,也可以讓憑證過期的已安裝應用程式繼續下載和執行更新。
若要在應用程式伺服器中包括時間戳記,則必須要提供時間戳記伺服器。如需如何選取時間戳記伺服器的詳細資訊,請參閱 HOW TO:簽署應用程式和部署資訊清單。
更新過期的憑證
在舊版 .NET Framework 中,更新憑證已過期的應用程式可能會導致該應用程式停止運作。若要解決這個問題,請使用下列其中一種方法:
將 .NET Framework 更新為 2.0 SP1 版或更新版本 (在 Windows XP 上) 或 3.5 版或更新版本 (在 Windows Vista 上)。
解除安裝應用程式,並重新安裝具有有效憑證的新版本。
建立可更新憑證的命令列組件。您可以在 Microsoft 技術支援文章 925521 找到這個程序的逐步資訊。
儲存憑證
- 您可以在檔案系統上將憑證儲存為 .pfx 檔,或者也可以將它們儲存在金鑰容器內。Windows 網域中的使用者可以擁有許多金鑰容器。除非您指定要將憑證儲存成 .pfx,否則 MakeCert.exe 預設會將憑證儲存在您的個人金鑰容器內。Mage.exe 和 MageUI.exe (用於建立 ClickOnce 部署的 Windows SDK 工具) 可讓您使用以任一種方式儲存的憑證。