共用方式為


簽署應用程式和部署指令清單

如果您想要使用 ClickOnce 部署發佈應用程式,則必須使用公開/私鑰組簽署應用程式和部署指令清單,並使用 Authenticode 技術進行簽署。 您可以使用 Windows 憑證儲存或金鑰檔案中的憑證來簽署指令清單。

本文中的資訊僅適用於您使用 .NET Framework 4.8.1 或更早版本時。 如果您使用 .NET 5 或更新版本,請遵循 使用 ClickOnce 部署 .NET Windows 傳統型應用程式中的步驟。

簽署 ClickOnce 指令清單對於 .exe型應用程式而言是選擇性的。 如需詳細資訊,請參閱本檔案的「Generate unsigned manifests」一節。

如需建立金鑰檔案的相關信息,請參閱 如何:建立公開-私鑰組

如需簽署元件和應用程式指令清單的相關信息,請參閱 管理元件和指令清單簽署

備註

Visual Studio 僅支援擴展名為 .pfx 的個人資訊交換 (PFX) 密鑰檔案。 不過,您可以按下項目屬性的 [簽署] 頁面上的 [從市集選取],從目前使用者的 Windows 證書存儲選取其他類型的憑證。

使用憑證簽署

若要使用此方法,您必須具有證書頒發機構單位 (CA) 簽署的憑證。 憑證是由第三方認證服務提供者或企業內授權的組織所發行。

  1. 移至 [項目屬性] 視窗(以滑鼠右鍵按兩下 [方案 總管] 中的項目節點,然後選取 [ 屬性]。 在 [ 簽署] 索引標籤上,選取 [ 簽署 ClickOnce 指令清單] 複選框。

  2. 按兩下 [ 從市集選取] 按鈕。

    [ 選取憑證] 對話框隨即出現,並顯示 Windows 證書存儲的內容。

    小提示

    如果您按兩下 [按兩下這裡以檢視憑證屬性],[ 憑證詳細資料 ] 對話框隨即出現。 此對話框包含憑證和其他選項的詳細資訊。 按兩下 [憑證 ] 以檢視其他說明資訊。

  3. 選取您想要用來簽署清單的憑證。

    小提示

    如果存放區中沒有任何憑證,您仍然可以 使用測試憑證進行簽署

  4. 此外,您可以在 [ 時間戳伺服器 URL ] 文字框中指定時間戳伺服器的位址。 這是一台提供時間戳的伺服器,用於指定指令清單簽署的時間。 它通常是由提供 CA 所簽署憑證的相同第三方所提供。

使用現有的金鑰檔案簽署

  1. 移至 [項目屬性] 視窗(以滑鼠右鍵按兩下 [方案 總管] 中的項目節點,然後選取 [ 屬性]。 在 [ 簽署] 索引標籤上,選取 [ 簽署 ClickOnce 指令清單] 複選框。

  2. 按兩下 [ 從檔案選取] 按鈕。

    [ 選取檔案 ] 對話框隨即出現。

  3. 在 [ 選取檔案 ] 對話框中,流覽至您要使用之密鑰檔案 (.pfx) 的位置,然後按兩下 [ 開啟]。

    備註

    此選項僅支援擴展名為 .pfx 的檔案。 如果您有另一種格式的密鑰檔案或憑證,請將它儲存在 Windows 證書存儲中,然後選取憑證,如上一個程式所述。 選取的憑證用途應包含程式代碼簽署。

    [ 輸入要開啟檔案的密碼 ] 對話框隨即出現。 (如果 .pfx 檔案已儲存在您的 Windows 證書存儲中,或未受到密碼保護,則不會提示您輸入密碼。

  4. 輸入密碼以存取金鑰檔案,然後選取 Enter

  5. 選取 [更多詳細數據... ] 以檢視憑證的屬性。 ClickOnce 會在使用者安裝應用程式時,將 主旨 欄位的值顯示為 發行者。 以下是使用者安裝 ClickOnce 應用程式時所看到的範例:

    應用程式安裝時間顯示的憑證螢幕快照。

備註

.pfx 檔案不能包含憑證鏈結資訊。 如果這樣做,會發生下列匯入錯誤: 找不到用於解密的憑證和私鑰。 若要移除憑證鏈結資訊,您可以使用 Certmgr.msc,並停用導出 *.pfx 檔案時包含所有憑證的選項

使用測試憑證簽署

測試憑證不是由證書頒發機構單位 (CA) 簽署,而且只能用於測試目的。 如需測試憑證的詳細資訊,請參閱 使用憑證授權單位如何協助使用者

  1. 移至 [項目屬性] 視窗(以滑鼠右鍵按兩下 [方案 總管] 中的項目節點,然後選取 [ 屬性]。 在 [ 簽署] 索引標籤上,選取 [ 簽署 ClickOnce 指令清單] 複選框。

  2. 若要建立要測試的新憑證,請按兩下 [ 建立測試憑證 ] 按鈕。

  3. 在 [ 建立測試憑證 ] 對話框中,輸入密碼以協助保護您的測試憑證。

備註

除非您以 .NET 2.0 為目標,否則請務必選擇 sha256RSA 作為 簽章演算法

產生未簽署的內容清單

簽署 ClickOnce 指令清單對於基於.exe的應用程式是選擇性的。 下列程式示範如何產生未簽署的 ClickOnce 指令清單。

這很重要

未簽署的指令清單可以簡化應用程式的開發和測試。 不過,未簽署的指令清單會在生產環境中帶來大量安全性風險。 只有當 ClickOnce 應用程式在與因特網或其他惡意代碼來源完全隔離的內部網路上執行時,才考慮使用未簽署的指令清單。

根據預設,ClickOnce 會自動產生已簽署的資訊清單,除非在產生的雜湊中特別排除一或多個檔案。 換句話說,如果哈希中包含所有檔案,則發佈應用程式會產生已簽署的指令清單,即使清除 [ 簽署 ClickOnce 指令清單 ] 複選框也一樣。

產生未簽署的清單檔案,並將所有檔案包含在生成的哈希中

若要產生包含哈希中所有檔案的未簽署指令清單,您必須先將應用程式與已簽署的指令清單一起發佈。 因此,請先遵循上述其中一個程序簽署 ClickOnce 指令清單,然後發佈應用程式。

  1. 在 [ 簽署] 索引標籤上,清除 [ 簽署 ClickOnce 指令清單] 複選框。

  2. 在 [ 發佈] 索引標籤上,重設發行版本,讓只有一個版本的應用程式可供使用。 取消勾選 [每次發行時自動遞增版本] 的選項框。 根據預設,Visual Studio 會在每次發佈應用程式時自動遞增發行版本的修訂編號。 如需詳細資訊,請參閱 如何:設定 ClickOnce 發行版本

  3. 發行應用程式。 Visual Studio 會告訴您應用程式已使用與伺服器上現有應用程式不同的密鑰進行簽署,並詢問您是否要覆寫它。 選擇 [是]

生成未簽署的清單文件,並在生成的哈希中排除一個或多個檔案

  1. 在 [ 簽署 ] 頁面上,清除 [ 簽署 ClickOnce 指令清單] 複選框。

  2. 在 [發佈] 索引標籤上,選擇 [應用程式檔案] 按鈕以開啟 [應用程式檔案] 對話框,並將您要從產生的哈希中排除的檔案,將 [哈希] 設定為 [排除]。

    備註

    從哈希中排除檔案會設定 ClickOnce 停用 manifest 檔案的自動簽署,因此您不需要先使用已簽署的 manifest 檔案發布,如前述步驟所示。

  3. 發行應用程式。