Dela via


Sn.exe (strong name tool)

Verktyget Strong Name (Sn.exe) hjälper till att signera sammansättningar med starka namn. Sn.exe innehåller alternativ för nyckelhantering, signaturgenerering och signaturverifiering.

Varning

Förlita dig inte på starka namn för säkerhet. De ger endast en unik identitet.

Mer information om starka namngivnings- och starknamnssammansättningar finns i Sammansättningar med starka namn och Gör så här : Signera en sammansättning med ett starkt namn.

Verktyget Starkt namn installeras automatiskt med Visual Studio. Starta verktyget genom att använda Visual Studio Developer Command Prompt eller Visual Studio Developer PowerShell.

Anteckning

På 64-bitarsdatorer kör du 32-bitarsversionen av Sn.exe med hjälp av Kommandotolken för utvecklare för Visual Studio och 64-bitarsversionen med hjälp av Visual Studio x64 Win64-kommandotolken.

Skriv följande vid kommandotolken:

Syntax

sn [-quiet][option [parameter(s)]]

Parametrar

Alternativ Beskrivning
-a identityKeyPairFile signaturePublicKeyFile Genererar data för att migrera identitetsnyckeln AssemblySignatureKeyAttribute till signaturnyckeln från en fil.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Genererar data för att migrera identitetsnyckeln AssemblySignatureKeyAttribute till signaturnyckeln från en nyckelcontainer.
-c [csp] Anger standardprovidern för kryptografiska tjänster (CSP) som ska användas för stark namnsignering. Den här inställningen gäller för hela datorn. Om du inte anger ett CSP-namn rensar Sn.exe den aktuella inställningen.
-d container Tar bort den angivna nyckelcontainern från det starka namnet CSP.
-D assembly1 assembly2 Verifierar att två sammansättningar endast skiljer sig åt med signatur. Detta används ofta som en kontroll när en sammansättning har signerats på nytt med ett annat nyckelpar.
-e assembly outfile Extraherar den offentliga nyckeln från sammansättningen och lagrar den i utdatafil.
-h Visar kommandosyntax och alternativ för verktyget.
-i infile container Installerar nyckelparet från infile i den angivna nyckelcontainern. Nyckelcontainern finns i CSP:en med starkt namn.
-k [keysize] outfile Genererar en ny RSACryptoServiceProvider nyckel med den angivna storleken och skriver den till den angivna filen. Både en offentlig och en privat nyckel skrivs till filen.

Om du inte anger en nyckelstorlek genereras en 1 024-bitarsnyckel som standard om du har installerat Microsofts utökade kryptografiprovider. Annars genereras en 512-bitarsnyckel.

Parametern keysize stöder nyckellängder från 384 bitar till 16 384 bitar i steg om 8 bitar om du har Microsofts utökade kryptografiprovider installerad. Den stöder nyckellängder från 384 bitar till 512 bitar i steg om 8 bitar om du har installerat Microsofts base cryptographic provider.
-m [y or n] Anger om nyckelcontainrar är datorspecifika eller användarspecifika. Om du anger y är nyckelcontainrar datorspecifika. Om du anger n är nyckelcontainrar användarspecifika.

Om varken y eller n har angetts visar det här alternativet den aktuella inställningen.
-o infile [outfile] Extraherar den offentliga nyckeln från infilen och lagrar den i en .csv fil. Ett kommatecken separerar varje byte av den offentliga nyckeln. Det här formatet är användbart för hårdkodade referenser till nycklar som initierade matriser i källkoden. Om du inte anger en utdatafil placerar det här alternativet utdata i Urklipp. Observera: Det här alternativet verifierar inte att indata bara är en offentlig nyckel. infile Om innehåller ett nyckelpar med en privat nyckel extraheras även den privata nyckeln.
-p infile outfile [hashalg] Extraherar den offentliga nyckeln från nyckelparet i infile och lagrar den i utfil, eventuellt med hjälp av RSA-algoritmen som anges av hashalg. Den här offentliga nyckeln kan användas för att fördröja signering av en sammansättning med alternativen /delaysign+ och /keyfile i Assembly Linker (Al.exe). När en sammansättning är fördröjd signeras endast den offentliga nyckeln vid kompileringstid och utrymme reserveras i filen för att signaturen ska läggas till senare, när den privata nyckeln är känd.
-pc container outfile [hashalg] Extraherar den offentliga nyckeln från nyckelparet i containern och lagrar den i utdatafil. Om du använder hashalg-alternativet används RSA-algoritmen för att extrahera den offentliga nyckeln.
-Pb [y or n] Anger om principen för att kringgå starka namn tillämpas. Om du anger y verifieras inte starka namn för fullständiga förtroendesammansättningar när de läses in i ett fullständigt förtroende AppDomain. Om du anger n verifieras starka namn för korrekthet, men inte för ett specifikt starkt namn. StrongNameIdentityPermission har ingen effekt på sammansättningar med fullständigt förtroende. Du måste göra en egen kontroll för en stark namnmatchning.

Om varken y eller n anges visar det här alternativet den aktuella inställningen. Standardvärdet är y. Observera: På 64-bitarsdatorer måste du ange den här parametern i både 32-bitars- och 64-bitarsinstanserna av Sn.exe.
-q[uiet] Anger tyst läge; undertrycker visning av lyckade meddelanden.
-R[a] assembly infile Signerar om en tidigare signerad eller fördröjd signerad sammansättning med nyckelparet i infile.

Om -Ra används beräknas hashvärden om för alla filer i sammansättningen.
-Rc[a] assembly container Signerar om en tidigare signerad eller fördröjd signerad sammansättning med nyckelparet i containern.

Om -Rca används omberäknas hashvärden för alla filer i sammansättningen.
-Rh assembly Beräknar om hashvärden för alla filer i sammansättningen.
-t[p] infile Visar token för den offentliga nyckeln som lagras i infile. Innehållet i infilen måste vara en offentlig nyckel som tidigare genererats från en nyckelparfil med hjälp av -p. Använd inte alternativet -t[p] för att extrahera token direkt från en nyckelparfil.

Sn.exe beräknar token med hjälp av en hash-funktion från den offentliga nyckeln. För att spara utrymme lagrar common language runtime offentliga nyckeltoken i manifestet som en del av en referens till en annan sammansättning när den registrerar ett beroende till en sammansättning som har ett starkt namn. Alternativet -tp visar den offentliga nyckeln utöver token. AssemblySignatureKeyAttribute Om attributet har tillämpats på sammansättningen är token för identitetsnyckeln och namnet på hash-algoritmen och identitetsnyckeln visas.

Observera att det här alternativet inte verifierar sammansättningssignaturen och bör inte användas för att fatta förtroendebeslut. Det här alternativet visar endast råa tokendata för offentliga nycklar.
-T[p] assembly Visar token för offentlig nyckel för sammansättningen.Sammansättningen måste vara namnet på en fil som innehåller ett sammansättningsmanifest.

Sn.exe beräknar token med hjälp av en hash-funktion från den offentliga nyckeln. För att spara utrymme lagrar körningen token för offentliga nycklar i manifestet som en del av en referens till en annan sammansättning när den registrerar ett beroende till en sammansättning som har ett starkt namn. Alternativet -Tp visar den offentliga nyckeln utöver token. AssemblySignatureKeyAttribute Om attributet har tillämpats på sammansättningen är token för identitetsnyckeln och namnet på hash-algoritmen och identitetsnyckeln visas.

Observera att det här alternativet inte verifierar sammansättningssignaturen och bör inte användas för att fatta förtroendebeslut. Det här alternativet visar endast råa tokendata för offentliga nycklar.
-TS assembly infile Test-signerar den signerade eller delvis signerade sammansättningen med nyckelparet i infile.
-TSc assembly container Test-signerar den signerade eller delvis signerade sammansättningen med nyckelparet i nyckelcontainerns container.
-v assembly Verifierar det starka namnet i sammansättningen, där sammansättningen är namnet på en fil som innehåller ett sammansättningsmanifest.
-vf assembly Verifierar det starka namnet i sammansättningen. Till skillnad från alternativet -v tvingar -vf verifiering även om det är inaktiverat med alternativet -Vr .
-Vk regfile.reg assembly [userlist] [infile] Skapar en registreringspostersfil (.reg) som du kan använda för att registrera den angivna sammansättningen för överhoppning av verifiering. Reglerna för namngivning av sammansättningar som gäller för alternativet -Vr gäller även för –Vk . Information om alternativen för användarlista och infil finns i alternativet –Vr .
-Vl Visar en lista över aktuella inställningar för verifiering av starka namn på den här datorn.
-Vr assembly [userlist] [infile] Registrerar sammansättningen för verifieringshoppning. Du kan också ange en kommaavgränsad lista med användarnamn som hoppa över verifieringen ska gälla för. Om du anger infile förblir verifiering aktiverad, men den offentliga nyckeln i infil används i verifieringsåtgärder. Du kan ange sammansättning i formatet *, strongname för att registrera alla sammansättningar med det angivna starka namnet. För strongname anger du strängen med hexadecimala siffror som representerar den tokeniserade formen av den offentliga nyckeln. Se alternativen -t och -T för att visa token för offentlig nyckel. Försiktighet: Använd endast det här alternativet under utvecklingen. Om du lägger till en sammansättning i listan hoppa över verifiering skapas en säkerhetsrisk. En skadlig sammansättning kan använda det fullständigt angivna sammansättningsnamnet (sammansättningsnamn, version, kultur och token för offentlig nyckel) för sammansättningen som läggs till i listan hoppa över verifiering för att förfalska dess identitet. Detta skulle göra det möjligt för den skadliga sammansättningen att också hoppa över verifieringen.
-Vu assembly Avregistrerar sammansättningen för verifieringshoppning. Samma regler för namngivning av sammansättningar som gäller för -Vr gäller för -Vu.
-Vx Tar bort alla verifieringsöverhoppningsposter.
-? Visar kommandosyntax och alternativ för verktyget.

Anteckning

Alla Sn.exe alternativ är skiftlägeskänsliga och måste skrivas exakt så som de visas för att kännas igen av verktyget.

Kommentarer

Alternativen -R och -Rc är användbara för sammansättningar som har signerats med fördröjning. I det här scenariot har endast den offentliga nyckeln ställts in vid kompileringen och signering utförs senare, när den privata nyckeln är känd.

Anteckning

För parametrar (till exempel – Vr) som skriver till skyddade resurser, till exempel registret, kör SN.exe som administratör.

Verktyget Starkt namn förutsätter att offentliga/privata nyckelpar genereras med algoritmidentifieraren AT_SIGNATURE . Offentliga/privata nyckelpar som genereras med algoritmen AT_KEYEXCHANGE genererar ett fel.

Exempel

Följande kommando skapar ett nytt, slumpmässigt nyckelpar och lagrar det i keyPair.snk.

sn -k keyPair.snk

Följande kommando lagrar nyckeln i keyPair.snk containern MyContainer i det starka namnet CSP.

sn -i keyPair.snk MyContainer

Följande kommando extraherar den offentliga nyckeln från keyPair.snk och lagrar den i publicKey.snk.

sn -p keyPair.snk publicKey.snk

Följande kommando visar den offentliga nyckeln och token för den offentliga nyckeln i publicKey.snk.

sn -tp publicKey.snk

Följande kommando verifierar sammansättningen MyAsm.dll.

sn -v MyAsm.dll

Följande kommando tar bort MyContainer från standard-CSP.

sn -d MyContainer

Se även