共用方式為


組件簽署範例

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

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

從元件檔、元件指令清單和您將用來簽署元件的憑證檔案開始。 憑證檔案必須是 2048 位或更大。 您不需要使用受信任的憑證。 憑證僅用於驗證元件尚未損毀。

執行 Microsoft Windows 軟體開發工具包 (SDK) 中提供的Pktextract.exe公用程式,從憑證檔案中擷取公鑰令牌。 若要讓 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 的業界標準格式。

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