組件簽署範例

下列範例討論如何產生由元件資訊清單、驗證目錄和元件檔組成的已簽署並存元件。 應該簽署共用並存元件。 作業系統會先驗證元件簽章,再將共用元件安裝到全域並存存放區, (WinSxS) 。 這很難詐騙並存元件的發行者。

請注意,在產生元件目錄之後變更元件檔案或資訊清單的內容會使目錄和元件失效。 如果您在建立和簽署目錄之後必須更新元件檔案或資訊清單,則必須再次簽署元件並產生新的目錄。

從元件檔案、元件資訊清單和您將用來簽署元件的憑證檔案開始。 憑證檔案必須是 2048 位或更大。 您不需要使用受信任的憑證。 憑證只會用來確認元件尚未損毀。

執行 Microsoft Windows 軟體發展工具組中提供的 Pktextract.exe 公用程式 (SDK) ,以從憑證檔案擷取公開金鑰權杖。 若要讓 Pktextract 正常運作,憑證檔案必須存在於與公用程式相同的目錄中。 使用擷取的公開金鑰權杖值來更新資訊清單檔中 assemblyIdentity元素的publicKeyToken屬性。

以下是名為 MySampleAssembly.manifest 的資訊清單檔案範例。 MySampleAssembly 元件只包含一個檔案,MYFILE.DLL。 請注意,assemblyIdentity元素的publicKeyToken屬性值已更新為公開金鑰權杖的值。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity 
        type="win32" 
        name="Microsoft.Windows.MySampleAssembly" 
        version="1.0.0.0" 
        processorArchitecture="x86"         
        publicKeyToken="0000000000000000"/>
    <file name="myfile.dll"/>
</assembly>

接下來,執行 Windows SDK 中提供的Mt.exe公用程式。 元件檔案必須位於與資訊清單相同的目錄中。 在此範例中,這是 MySampleAssembly 目錄。 針對範例呼叫Mt.exe,如下所示:

C:\MySampleAssembly >mt.exe -manifest MySampleAssembly.manifest -hashupdate -makecdfs

以下是執行Mt.exe之後,範例資訊清單的外觀。 請注意,使用 hashupdate 選項執行Mt.exe會新增檔案的 SHA-1 雜湊。 請勿變更此值。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity 
        type="win32" 
        name=" Microsoft.Windows.MySampleAssembly" 
        version="1.0.0.0" 
        processorArchitecture="x86"         
        publicKeyToken="0000000000000000"/>
    <file name="myfile.dll"
hash="a1d362d6278557bbe965a684ac7adb4e57427a29" hashalg="SHA1"/>
</assembly>

使用 -makecdfs 選項執行Mt.exe會產生名為 MySampleAssembly.manifest.cdf 的檔案,描述將用來驗證資訊清單的安全性類別目錄內容。

下一個步驟是在此 .cdf 上執行Makecat.exe,以建立元件的安全性類別目錄。 此範例Makecat.exe的呼叫如下所示:

c:\MySampleAssembly makecat MySampleAssembly.manifest.cdf >

最後一個步驟是執行 SignTool.exe,以使用憑證簽署類別目錄檔案。 這應該是先前用來產生公開金鑰權杖的相同憑證。 如需SignTool.exe的詳細資訊,請參閱 SignTool 主題。 範例的 SignTool 呼叫如下所示:

c:\MySampleAssembly > signtool sign /f < fullpath > mycompany.pfx /du https://www.mycompany.com/MySampleAssembly /t https://timestamp.digicert.com MySampleAssembly.cat

如果您有已驗證的數位憑證,而憑證授權單位單位使用 PVK 檔案格式來儲存私密金鑰,您可以使用 PVK 數位憑證檔案匯入工具 (pvkimprt.exe) 將金鑰匯入密碼編譯服務提供者, (CSP) 。 此公用程式可讓您匯出為 PFX/P12 的業界標準格式。 如需 PVK 數位憑證檔匯入工具的詳細資訊,請參閱 MSDN 程式庫的部署資源一節,或連絡您的憑證授權單位單位。

另請參閱 建立簽署的檔案和目錄