Signering för attestering av Windows-drivrutiner

I den här artikeln beskrivs hur du signerar en drivrutin med intygsbaserad signering.

Anmärkning

Signerade drivrutiner avsedda för konsumenter publiceras inte på Windows Update. Stödet fortsätter för attesteringssignerade drivrutiner när du testar scenarier med CoDev eller Test Registry Key/Surface SSRK alternativ.

Förutsättningar

Skapa CAB-filen

Följande procedur skapar en CAB-filöverföring med hjälp av drivrutinsexemplet Echo för att illustrera stegen.

En typisk CAB-filöverföring måste innehålla följande komponenter:

  • Själva drivrutinen (till exempel Echo.sys).

  • Inf-drivrutinsfilen (.inf) som används av instrumentpanelen för att underlätta signeringsprocessen.

  • Symbolfilen som används för felsökning av information, till exempel Echo.pdb. Filen .pdb krävs för Microsoft automatiserade verktyg för kraschanalys.

  • Katalogfiler (.cat) krävs och används endast för företagsverifiering. Microsoft återskapar katalogfiler och ersätter alla katalogfiler som skickats tidigare.

Anmärkning

Varje drivrutinsmapp i CAB-filen måste ha stöd för samma uppsättning arkitekturer. De måste till exempel ha stöd för x86, x64 eller så måste alla ha stöd för både x86 och x64.

Använd inte UNC-filresurssökvägar när du refererar till dina drivrutinsplatser (\server\share). Du måste använda en mappad enhetsbeteckning för att CAB-filen ska vara giltig.

Följ dessa steg för att skapa CAB-filen:

  1. Samla in binärfilerna som ska loggas in i en enda katalog. I det här exemplet används C:\Echo-mappen.

  2. Öppna ett kommandotolksfönster med administratörsbehörighet.

  3. MakeCab /? Ange kommandot för att se kommandoalternativen:

    C:\Echo> MakeCab /?
    Cabinet Maker - Lossless Data Compression Tool
    
    MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination]
    MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...]
    
    source         File to compress.
    destination    File name to give compressed file. If omitted, the
                   last character of the source file name is replaced
                   with an underscore (_) and used as the destination.
    /F directives  A file with MakeCAB directives (may be repeated). Refer to
                   Microsoft Cabinet SDK for information on directive_file.
    /D var=value   Defines variable with specified value.
    /L dir         Location to place destination (default is current directory).
    /V[n]          Verbosity level (1..3).
    
  4. Förbered en indatafil för CAB-filenhetens beskrivningsramverk (DDF). För Echo-drivrutinen i det här exemplet kan indata likna följande kod:

    ;*** Echo.ddf example
    ;
    .OPTION EXPLICIT     ; Generate errors
    .Set CabinetFileCountThreshold=0
    .Set FolderFileCountThreshold=0
    .Set FolderSizeThreshold=0
    .Set MaxCabinetSize=0
    .Set MaxDiskFileCount=0
    .Set MaxDiskSize=0
    .Set CompressionType=MSZIP
    .Set Cabinet=on
    .Set Compress=on
    ;Specify file name for new cab file
    .Set CabinetNameTemplate=Echo.cab
    ; Specify the subdirectory for the files.
    ; Your cab file should not have files at the root level,
    ; and each driver package must be in a separate subfolder.
    .Set DestinationDir=Echo
    ;Specify files to be included in cab file
    C:\Echo\Echo.Inf
    C:\Echo\Echo.Sys
    
  5. Ange följande kommando för att skapa CAB-filen:

    C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
    

    Kommandots MakeCab utdata bör visa antalet filer i den skapade CAB-filen. I det här fallet bör det finnas två filer.

    C:\Echo> MakeCab /f Echo.ddf
    Cabinet Maker - Lossless Data Compression Tool
    
    17,682 bytes in 2 files
    Total files:              2
    Bytes before:        17,682
    Bytes after:          7,374
    After/Before:            41.70% compression
    Time:                     0.20 seconds ( 0 hr  0 min  0.20 sec)
    Throughput:              86.77 Kb/second
    
  6. Leta upp CAB-filen i underkatalogen Disk1 . Du kan välja CAB-filen i Utforskaren för att kontrollera att den innehåller de förväntade filerna.

Signera CAB-filen med ditt EV-certifikat

Nästa steg är att signera CAB-filen med ditt EV-certifikat.

Använd den process som rekommenderas av ev-certifikatprovidern. Om du till exempel vill signera CAB-filen med en SHA256-tidsstämpel anger du följande kommando:

C:\Echo> SignTool sign /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"

Viktigt!

Kom ihåg att använda branschtips för att hantera säkerheten för EV-kodsigneringsprocessen.

Skicka den EV-signerade CAB-filen i Partnercenter

När du har signerat CAB-filen är du redo att skicka filen i Partnercenter:

  1. Gå till instrumentpanelen för Partnercenter-maskinvara och logga in med dina autentiseringsuppgifter.

  2. Välj Skicka ny maskinvara.

    Skärmbild av listan över maskinvaruinlämningar.

  3. I avsnittet Paket och signeringsegenskaper anger du ett produktnamn för din drivrutinsinlämning. Använd det här namnet för att söka efter och organisera dina drivrutinsinsändningar.

    Anmärkning

    Namnet visas när du delar föraren med ett annat företag.

  4. Lämna båda testsigneringsalternativen avmarkerade (ej valda).

  5. För alternativet Begärda signaturer väljer du de signaturer som ska ingå i drivrutinspaketet:

    Skärmbild som visar alternativen för att skicka Echo-drivrutinen för signering.

  6. Välj Skicka längst ned på sidan.

  7. När signeringsprocessen är klar laddar du ned den signerade drivrutinen från maskinvaruinstrumentpanelen.

Verifiera att drivrutinen är korrekt signerad

Bekräfta att din drivrutin är korrekt signerad enligt följande steg:

  1. När du har hämtat insändningsfilen extraherar du drivrutinsfilen.

  2. Öppna ett kommandotolksfönster med administratörsbehörighet.

  3. Ange följande kommando för att kontrollera att drivrutinen är signerad som förväntat:

    C:\Echo> SignTool verify Echo.Sys
    
  4. Om du vill visa en lista med annan information och låta SignTool verifiera alla signaturer i en fil med flera signaturer anger du följande kommando:

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. Utför följande steg för att bekräfta drivrutinens utökade nyckelanvändningar (EKU:er):

    1. Öppna Windows Explorer och leta upp den binära filen. Högerklicka på filen och välj Egenskaper.

    2. På fliken Digitala signaturer väljer du det angivna objektet i signaturlistan.

    3. Välj Information och välj sedan Visa certifikat.

    4. På fliken Information väljer du Förbättrad nyckelanvändning.

Drivrutinen använder följande process när drivrutinen avgår:

  1. Lägg till en inbäddad Microsoft SHA-2-signatur.

  2. Om drivrutinsbinärfilerna är signerade och inbäddade av kunden med sina egna certifikat, skrivs signaturerna över.

  3. Skapa och signera en ny katalogfil med ett SHA-2-Microsoft certifikat. Katalogen ersätter alla befintliga kataloger som tillhandahålls av kunden.

Testa drivrutinen på Windows

Installera exempeldrivrutinen och testa den på Windows:

  1. Öppna ett kommandotolksfönster med administratörsbehörighet.

  2. Gå till mappen för drivrutinspaketet och ange följande kommando.

    C:\Echo> devcon install echo.inf root\ECHO
    
  3. Bekräfta att drivrutinsinstallationsprocessen inte visar följande felmeddelande: "Windows kan inte verifiera utgivaren av drivrutinsprogramvaran."

Skapa en sändning med flera drivrutiner

Skicka flera drivrutiner samtidigt genom att följa dessa steg:

  1. Skapa en underkatalog för varje drivrutin.

    Diagram som visar ett exempel på en katalogstruktur för drivrutinssignering.

  2. Förbered en CAB-fil DDF-indatafil som refererar till underkatalogerna. I det här exemplet kan indata likna följande kod:

    ;*** Submission.ddf multiple driver example
    ;
    .OPTION EXPLICIT     ; Generate errors
    .Set CabinetFileCountThreshold=0
    .Set FolderFileCountThreshold=0
    .Set FolderSizeThreshold=0
    .Set MaxCabinetSize=0
    .Set MaxDiskFileCount=0
    .Set MaxDiskSize=0
    .Set CompressionType=MSZIP
    .Set Cabinet=on
    .Set Compress=on
    ;Specify file name for new cab file
    .Set CabinetNameTemplate=Echo.cab
    ;Specify files to be included in cab file
    ; First Driver
    .Set DestinationDir=DriverPackage1
    C:\DriverFiles\DriverPackage1\Driver1.sys
    C:\DriverFiles\DriverPackage1\Driver1.inf
    ; Second driver
    .Set DestinationDir=DriverPackage2
    C:\DriverFiles\DriverPackage2\Driver2.sys
    C:\DriverFiles\DriverPackage2\Driver2.inf