Authenticode 是一項 Microsoft 技術,它使用業界標準密碼編譯,使用數位憑證來簽署應用程式程式碼,以驗證應用程式發行者的真實性。 藉由使用 Authenticode 進行應用程式部署,ClickOnce 可降低特洛伊木馬程式的風險。 特洛伊木馬是一種病毒或其他有害程序,惡意第三方將其歪曲為來自已建立、值得信賴的來源的合法程序。 使用數位憑證簽署 ClickOnce 部署是選擇性步驟,可確認組件和檔案未遭到竄改。
下列各節說明 Authenticode 中使用的不同類型的數位憑證、如何使用憑證授權單位 (CA) 驗證憑證、憑證中時間戳記的角色,以及憑證可用的儲存體方法。
Authenticode 和程式碼簽署
數位憑證是包含加密公開/私密金鑰組的檔案,以及描述發行憑證的發行者和發行憑證的機構的中繼資料。
Authenticode 憑證有多種類型。 每一個都針對不同類型的簽署進行設定。 針對 ClickOnce 應用程式,您必須具有對程式代碼簽署有效的 Authenticode 憑證。 如果您嘗試使用其他類型的憑證 (例如數位電子郵件憑證) 簽署 ClickOnce 應用程式,則無法運作。 如需詳細資訊,請參閱 程式碼簽署簡介。
您可以透過以下三種方式之一取得程式碼簽署的憑證:
從憑證廠商購買一個。
從組織中負責建立數位憑證的群組接收一份。
使用 New-SelfSignedCertificate PowerShell Cmdlet 或使用 Windows 軟體開發套件 (SDK) 隨附的 MakeCert.exe來產生您自己的憑證。
使用憑證授權單位如何協助使用者
使用 New-SelfSignedCertificate 或 MakeCert.exe 公用程式產生的憑證通常稱為 自我憑證 或 測試憑證。這種憑證的運作方式與 .snk 檔案在 .NET Framework 中的運作方式大致相同。 它僅由公開/私有加密金鑰對組成,不包含有關發布者的可驗證資訊。 您可以使用自我憑證,在內部網路上部署具有高信任度的 ClickOnce 應用程式。 不過,當這些應用程式在用戶端電腦上執行時,ClickOnce 會將它們識別為來自未知的發行者。 根據預設,使用自我憑證簽署並透過網際網路部署的 ClickOnce 應用程式無法使用受信任的應用程式部署。
相反地,如果您從 CA (例如憑證廠商) 或企業內的部門收到憑證,則憑證會為您的使用者提供更高的安全性。 它不僅會識別已簽署軟體的發行者,而且會透過與簽署軟體的 CA 進行檢查來驗證該身分。 如果 CA 不是根授權單位,Authenticode 也會「鏈結」回根授權單位,以確認 CA 已獲授權發行憑證。 為了提高安全性,您應該盡可能使用 CA 所發行的憑證。
如需產生自我憑證的詳細資訊,請參閱 New-SelfSignedCertificate 或 MakeCert。
時間戳記
用來簽署 ClickOnce 應用程式的憑證會在特定時間長度 (通常是 12 個月) 後過期。 為了消除使用新憑證不斷重新簽署應用程式的需求,ClickOnce 支援時間戳記。 當應用程式使用時間戳記簽署時,只要時間戳記有效,即使在到期後仍會繼續接受其憑證。 這可讓具有過期憑證但時間戳記有效的 ClickOnce 應用程式下載並執行。 它還允許憑證過期的已安裝應用程式繼續下載和安裝更新。
若要在應用程式伺服器中併入時間戳記,時間戳記伺服器必須可用。 如需如何選取時間戳記伺服器的資訊,請參閱 如何:簽署應用程式和部署資訊清單。
更新過期的憑證
在舊版的 .NET Framework 中,更新憑證已過期的應用程式可能會導致該應用程式停止運作。 若要解決此問題,請使用下列其中一種方法:
更新 .NET Framework 3.5 版或更新版本。
解除安裝應用程式,然後使用有效憑證重新安裝新版本。
儲存證書
- 您可以將憑證儲存為檔案系統上的 .pfx 檔案,也可以將它們儲存在金鑰容器內。 Windows 網域上的使用者可以有多個金鑰容器。 根據預設, MakeCert.exe 會將憑證儲存在您的個人金鑰容器中,除非您指定它應該改為將憑證儲存至 .pfx 。 Mage.exe 和 MageUI.exe,用於建立 ClickOnce 部署的 Windows SDK 工具可讓您使用以任一方式儲存的憑證。