Delen via


Sn.exe (hulpmiddel Sterke naam)

Het hulpprogramma Strong Name (Sn.exe) helpt assembly's te ondertekenen met sterke namen. Sn.exe biedt opties voor sleutelbeheer, het genereren van handtekeningen en handtekeningverificatie.

Waarschuwing

Vertrouw niet op sterke namen voor beveiliging. Ze bieden alleen een unieke identiteit.

Zie voor meer informatie over sterke naamgeving en sterk benoemde assembly'sStrong-Named Assembly's en procedures: een assembly ondertekenen met een sterke naam.

Het hulpprogramma Strong Name wordt automatisch geïnstalleerd met Visual Studio. Gebruik de Visual Studio Developer-opdrachtprompt of Visual Studio Developer PowerShell om het hulpprogramma te starten.

Opmerking

Voer op 64-bits computers de 32-bits versie van Sn.exe uit met behulp van de opdrachtprompt voor Ontwikkelaars voor Visual Studio en de 64-bits versie met behulp van de Visual Studio x64 Win64-opdrachtprompt.

Typ het volgende bij de opdrachtprompt:

Syntaxis

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

Parameterwaarden

Optie Description
-a identityKeyPairFile signaturePublicKeyFile Hiermee worden AssemblySignatureKeyAttribute gegevens gegenereerd om de identiteitssleutel vanuit een bestand naar de handtekeningsleutel te migreren.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Hiermee worden AssemblySignatureKeyAttribute gegevens gegenereerd om de identiteitssleutel vanuit een sleutelcontainer naar de handtekeningsleutel te migreren.
-c [csp] Hiermee stelt u de standaard cryptografische serviceprovider (CSP) in die moet worden gebruikt voor sterke naamondertekening. Deze instelling is van toepassing op de hele computer. Als u geen CSP-naam opgeeft, Sn.exe de huidige instelling wist.
-d container Hiermee verwijdert u de opgegeven sleutelcontainer uit de sterke naam CSP.
-D assembly1 assembly2 Controleert of twee assembly's alleen per handtekening verschillen. Dit wordt vaak gebruikt als controle nadat een assembly opnieuw is ondertekend met een ander sleutelpaar.
-e assembly outfile Extraheert de openbare sleutel uit de assembly en slaat deze op in het outfile.
-h Geeft de opdrachtsyntaxis en opties voor het hulpprogramma weer.
-i infile container Installeert het sleutelpaar uit het bestand in de opgegeven sleutelcontainer. De sleutelcontainer bevindt zich in de sterke naam CSP.
-k [keysize] outfile Hiermee wordt een nieuwe RSACryptoServiceProvider sleutel van de opgegeven grootte gegenereerd en naar het opgegeven bestand geschreven. Zowel een openbare als een persoonlijke sleutel worden naar het bestand geschreven.

Als u geen sleutelgrootte opgeeft, wordt standaard een 1024-bits sleutel gegenereerd als u de verbeterde cryptografische provider van Microsoft hebt geïnstalleerd; anders wordt er een 512-bits sleutel gegenereerd.

De parameter keysize ondersteunt sleutellengten van 384 bits tot 16.384 bits in stappen van 8 bits als u de verbeterde cryptografische provider van Microsoft hebt geïnstalleerd. Het ondersteunt sleutellengten van 384 bits tot 512 bits in stappen van 8 bits als u de cryptografische provider van Microsoft hebt geïnstalleerd.
-m [y or n] Hiermee geeft u op of sleutelcontainers computerspecifiek of gebruikersspecifiek zijn. Als u y opgeeft, zijn sleutelcontainers computerspecifiek. Als u n opgeeft, zijn sleutelcontainers gebruikersspecifiek.

Als er geen y of n is opgegeven, wordt met deze optie de huidige instelling weergegeven.
-o infile [outfile] Extraheert de openbare sleutel uit het inbestand en slaat deze op in een .csv-bestand. Een komma scheidt elke byte van de openbare sleutel. Deze indeling is handig voor hardcoderingsverwijzingen naar sleutels als geïnitialiseerde matrices in broncode. Als u geen outfile opgeeft, wordt met deze optie de uitvoer op het Klembord geplaatst. Notitie: Met deze optie wordt niet gecontroleerd of de invoer alleen een openbare sleutel is. Als het infile een sleutelpaar met een persoonlijke sleutel bevat, wordt de persoonlijke sleutel ook geëxtraheerd.
-p infile outfile [hashalg] Extraheert de openbare sleutel uit het sleutelpaar in het inbestand en slaat deze op in het outfile, optioneel met behulp van het RSA-algoritme dat is opgegeven door hashalg. Deze openbare sleutel kan worden gebruikt om een assembly uit te stellen met behulp van de opties /delaysign+ en /keyfile van de Assembly Linker (Al.exe). Wanneer een assembly vertragingsondertekend is, wordt alleen de openbare sleutel ingesteld tijdens het compileren en wordt ruimte gereserveerd in het bestand om de handtekening later toe te voegen wanneer de persoonlijke sleutel bekend is.
-pc container outfile [hashalg] Extraheert de openbare sleutel uit het sleutelpaar in de container en slaat deze op in het outfile. Als u de hashalg-optie gebruikt, wordt het RSA-algoritme gebruikt om de openbare sleutel te extraheren.
-Pb [y or n] Hiermee geeft u op of het bypassbeleid voor sterke namen wordt afgedwongen. Als u y opgeeft, worden sterke namen voor assembly's met volledige vertrouwensrelaties niet gevalideerd wanneer ze in een volledig vertrouwen AppDomainworden geladen. Als u n opgeeft, worden sterke namen gevalideerd op juistheid, maar niet voor een specifieke sterke naam. Dit StrongNameIdentityPermission heeft geen invloed op assembly's met volledige vertrouwensrelatie. U moet uw eigen controle uitvoeren op een sterke naamovereenkomst.

Als geen van n beide is y opgegeven, wordt met deze optie de huidige instelling weergegeven. De standaardwaarde is y. Notitie: Op 64-bits computers moet u deze parameter instellen in zowel de 32-bits als de 64-bits exemplaren van Sn.exe.
-q[uiet] Hiermee geeft u de stille modus; onderdrukt de weergave van geslaagde berichten.
-R[a] assembly infile Ondertekent een eerder ondertekende of vertraagde assembly opnieuw met het sleutelpaar in het bestand.

Als -Ra wordt gebruikt, worden hashes opnieuw gecomputeerd voor alle bestanden in de assembly.
-Rc[a] assembly container Ondertekent een eerder ondertekende of vertraagde assembly opnieuw met het sleutelpaar in de container.

Als -Rca wordt gebruikt, worden hashes opnieuw gecomputeerd voor alle bestanden in de assembly.
-Rh assembly Recomputes hashes voor alle bestanden in de assembly.
-t[p] infile Geeft het token weer voor de openbare sleutel die is opgeslagen in het bestand. De inhoud van het bestand infile moet een openbare sleutel zijn die eerder is gegenereerd op basis van een sleutelpaarbestand met -p. Gebruik de optie -t[p] niet om het token rechtstreeks uit een sleutelpaarbestand te extraheren.

Sn.exe berekent het token met behulp van een hash-functie van de openbare sleutel. Om ruimte te besparen, slaat de algemene taalruntime openbare-sleuteltokens op in het manifest als onderdeel van een verwijzing naar een andere assembly wanneer een afhankelijkheid wordt vastgelegd in een assembly met een sterke naam. Met de optie -tp wordt de openbare sleutel naast het token weergegeven. Als het AssemblySignatureKeyAttribute kenmerk is toegepast op de assembly, is het token voor de identiteitssleutel en wordt de naam van het hash-algoritme en de identiteitssleutel weergegeven.

Houd er rekening mee dat deze optie de assemblyhandtekening niet verifieert en niet mag worden gebruikt om vertrouwensbeslissingen te nemen. Met deze optie worden alleen de onbewerkte openbare-sleuteltokengegevens weergegeven.
-T[p] assembly Geeft het openbare-sleuteltoken voor assembly weer. De assembly moet de naam zijn van een bestand dat een assemblymanifest bevat.

Sn.exe berekent het token met behulp van een hash-functie van de openbare sleutel. Om ruimte te besparen, slaat de runtime openbare-sleuteltokens op in het manifest als onderdeel van een verwijzing naar een andere assembly wanneer een afhankelijkheid wordt vastgelegd in een assembly met een sterke naam. Met de optie -Tp wordt de openbare sleutel naast het token weergegeven. Als het AssemblySignatureKeyAttribute kenmerk is toegepast op de assembly, is het token voor de identiteitssleutel en wordt de naam van het hash-algoritme en de identiteitssleutel weergegeven.

Houd er rekening mee dat deze optie de assemblyhandtekening niet verifieert en niet mag worden gebruikt om vertrouwensbeslissingen te nemen. Met deze optie worden alleen de onbewerkte openbare-sleuteltokengegevens weergegeven.
-TS assembly infile Test ondertekent de ondertekende of gedeeltelijk ondertekende assembly met het sleutelpaar in het bestand.
-TSc assembly container Test de ondertekende of gedeeltelijk ondertekende assembly met het sleutelpaar in de sleutelcontainercontainer.
-v assembly Controleert de sterke naam in assembly, waarbij assembly de naam is van een bestand dat een assemblymanifest bevat.
-vf assembly Controleert de sterke naam in assembly. In tegenstelling tot de optie -vf dwingt -vf verificatie af, zelfs als deze is uitgeschakeld met behulp van de optie -Vr .
-Vk regfile.reg assembly [userlist] [infile] Hiermee maakt u een registratievermeldingsbestand (.reg) dat u kunt gebruiken om de opgegeven assembly te registreren voor het overslaan van verificatie. De regels voor assemblynaamgeving die van toepassing zijn op de optie -Vr zijn ook van toepassing op -Vk . Zie de optie -Vr voor informatie over de opties voor de gebruikerslijst en infile.
-Vl Geeft de huidige instellingen weer voor verificatie met een sterke naam op deze computer.
-Vr assembly [userlist] [infile] Registreert assembly voor het overslaan van verificatie. U kunt eventueel een door komma's gescheiden lijst met gebruikersnamen opgeven waarop de verificatie overslaan moet worden toegepast. Als u een inbestand opgeeft, blijft verificatie ingeschakeld, maar wordt de openbare sleutel in het bestand gebruikt in verificatiebewerkingen. U kunt assembly opgeven in de vorm *, strongname om alle assembly's te registreren met de opgegeven sterke naam. Geef voor strongname de tekenreeks van hexadecimale cijfers op die de tokenized vorm van de openbare sleutel vertegenwoordigen. Zie de opties -t en -T om het openbare-sleuteltoken weer te geven. Voorzichtigheid: Gebruik deze optie alleen tijdens de ontwikkeling. Als u een assembly toevoegt aan de controlelijst overslaan, wordt er een beveiligingsprobleem gemaakt. Een kwaadwillende assembly kan de volledig opgegeven assemblynaam (assemblynaam, versie, cultuur en openbare-sleuteltoken) van de assembly gebruiken die is toegevoegd aan de verificatielijst overslaan om de identiteit ervan te vervalsen. Hierdoor kan de kwaadwillende assembly ook de verificatie overslaan.
-Vu assembly Registratie van assembly voor het overslaan van verificatie ongedaan maken. Dezelfde regels voor assemblynaamgeving die van toepassing zijn op -Vr zijn van toepassing op -Vu.
-Vx Hiermee verwijdert u alle vermeldingen voor het overslaan van verificatie.
-? Geeft de opdrachtsyntaxis en opties voor het hulpprogramma weer.

Opmerking

Alle Sn.exe opties zijn hoofdlettergevoelig en moeten exact worden getypt zoals wordt weergegeven om te worden herkend door het hulpprogramma.

Opmerkingen

De opties -R en -Rc zijn handig voor assembly's die zijn vertraagd. In dit scenario is alleen de openbare sleutel ingesteld op het moment van compileren en wordt de ondertekening later uitgevoerd wanneer de persoonlijke sleutel bekend is.

Opmerking

Voer voor parameters (bijvoorbeeld -Vr) die schrijven naar beveiligde resources, zoals het register, SN.exe uit als beheerder.

Bij het hulpprogramma Sterke naam wordt ervan uitgegaan dat openbare/persoonlijke sleutelparen worden gegenereerd met de AT_SIGNATURE algoritme-id. Openbare/persoonlijke sleutelparen die worden gegenereerd met het AT_KEYEXCHANGE algoritme genereren een fout.

Voorbeelden

Met de volgende opdracht wordt een nieuw, willekeurig sleutelpaar gemaakt en opgeslagen in keyPair.snk.

sn -k keyPair.snk

Met de volgende opdracht wordt de sleutel opgeslagen in keyPair.snk de container MyContainer in de sterke naam CSP.

sn -i keyPair.snk MyContainer

Met de volgende opdracht wordt de openbare sleutel uit keyPair.snk geëxtraheerd en opgeslagen in publicKey.snk.

sn -p keyPair.snk publicKey.snk

Met de volgende opdracht worden de openbare sleutel en het token weergegeven voor de openbare sleutel in publicKey.snk.

sn -tp publicKey.snk

Met de volgende opdracht wordt de assembly MyAsm.dllgecontroleerd.

sn -v MyAsm.dll

Met de volgende opdracht wordt MyContainer de standaard-CSP verwijderd.

sn -d MyContainer

Zie ook