Share via


Sn.exe (hulpprogramma Sterke naam)

Het hulpprogramma Sterke naam (Sn.exe) helpt bij het ondertekenen van assembly's 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 Strong-Named Assembly's en How to: Sign an Assembly with a Strong Name (Sterk benoemde assembly's ondertekenen met een sterke naam) voor meer informatie over sterke naamgeving en assembly's met sterke namen.

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

Notitie

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)]]

Parameters

Optie Beschrijving
-a identityKeyPairFile signaturePublicKeyFile Hiermee worden AssemblySignatureKeyAttribute gegevens gegenereerd om de identiteitssleutel vanuit een bestand te migreren naar de handtekeningsleutel.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Hiermee worden AssemblySignatureKeyAttribute gegevens gegenereerd om de identiteitssleutel vanuit een sleutelcontainer te migreren naar de handtekeningsleutel.
-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, wordt Sn.exe de huidige instelling gewist.
-d container Hiermee verwijdert u de opgegeven sleutelcontainer uit de sterke naam CSP.
-D assembly1 assembly2 Controleert of twee assembly's alleen op basis van handtekening verschillen. Dit wordt vaak gebruikt als controle nadat een assembly opnieuw is ondertekend met een ander sleutelpaar.
-e assembly outfile Haalt de openbare sleutel op uit de assembly en slaat deze op in het outfile.
-h Geeft de syntaxis van de opdracht en opties voor het hulpprogramma weer.
-i infile container Installeert het sleutelpaar vanuit het infile in de opgegeven sleutelcontainer. De sleutelcontainer bevindt zich in de sterke naam CSP.
-k [keysize] outfile Hiermee genereert u een nieuwe RSACryptoServiceProvider sleutel van de opgegeven grootte en schrijft u deze naar het opgegeven bestand. 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 microsoft-basis cryptografische provider 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 geen y of n is opgegeven, wordt met deze optie de huidige instelling weergegeven.
-o infile [outfile] Hiermee wordt de openbare sleutel uit het infile geëxtraheerd en opgeslagen in een .csv-bestand. Een komma scheidt elke byte van de openbare sleutel. Deze indeling is handig voor het coderen van verwijzingen naar sleutels als geïnitialiseerde matrices in broncode. Als u geen outfile opgeeft, wordt de uitvoer met deze optie op het Klembord geplaatst. Opmerking: Met deze optie wordt niet gecontroleerd of de invoer alleen een openbare sleutel is. Als de 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 infile en slaat deze op in outfile, optioneel met behulp van het RSA-algoritme dat is opgegeven door hashalg. Deze openbare sleutel kan worden gebruikt om het ondertekenen van een assembly uit te stellen met behulp van de opties /delaysign+ en /keyfile van de Assembly Linker (Al.exe). Wanneer een assembly vertragingsondertekening heeft, wordt alleen de openbare sleutel ingesteld tijdens het compileren en wordt er ruimte gereserveerd in het bestand zodat de handtekening later kan worden toegevoegd, wanneer de persoonlijke sleutel bekend is.
-pc container outfile [hashalg] Haalt de openbare sleutel op uit het sleutelpaar in de container en slaat deze op in een outfile. Als u de optie hashalg gebruikt, wordt het RSA-algoritme gebruikt om de openbare sleutel te extraheren.
-Pb [y or n] Hiermee geeft u op of het beleid voor het omzeilen van sterke namen wordt afgedwongen. Als u y opgeeft, worden sterke namen voor assembly's met volledig vertrouwen niet gevalideerd wanneer ze in een volledig vertrouwensrelatie AppDomainworden geladen. Als u n opgeeft, worden sterke namen gevalideerd op juistheid, maar niet voor een specifieke sterke naam. De StrongNameIdentityPermission heeft geen invloed op assembly's met volledig vertrouwen. U moet uw eigen controle uitvoeren op een sterke naamovereenkomst.

Als geen van beide yn wordt opgegeven, wordt met deze optie de huidige instelling weergegeven. De standaardwaarde is y. Opmerking: 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 opnieuw een eerder ondertekende of vertraagde assembly 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 Hiermee worden hashes voor alle bestanden in de assembly opnieuw gecomputed.
-t[p] infile Geeft het token weer voor de openbare sleutel die is opgeslagen in het inbestand. De inhoud van het bestand moet een openbare sleutel zijn die eerder is gegenereerd op basis van een sleutelpaarbestand met behulp van -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 common language runtime openbare-sleuteltokens op in het manifest als onderdeel van een verwijzing naar een andere assembly wanneer een afhankelijkheid van een assembly met een sterke naam wordt vastgelegd. Met de optie -tp wordt naast het token ook de openbare sleutel 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 handtekening van de assembly 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 token voor de openbare sleutel 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 van een assembly met een sterke naam wordt vastgelegd. 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 handtekening van de assembly niet verifieert en niet mag worden gebruikt om vertrouwensbeslissingen te nemen. Met deze optie worden alleen de onbewerkte openbare-sleuteltokengegevens weergegeven.
-TS assembly infile Testondertekening van de ondertekende of gedeeltelijk ondertekende assembly met het sleutelpaar in het bestand.
-TSc assembly container Testondertekening van 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 naamgeving van assembly's 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 Hiermee worden de huidige instellingen voor verificatie van sterke naam op deze computer weergegeven.
-Vr assembly [userlist] [infile] Registreert de assembly voor het overslaan van verificatie. U kunt eventueel een door komma's gescheiden lijst met gebruikersnamen opgeven waarop de verificatie overslaan van toepassing moet zijn. Als u infile opgeeft, blijft verificatie ingeschakeld, maar wordt de openbare sleutel in het bestand gebruikt voor verificatiebewerkingen. U kunt assembly opgeven in de vorm *, strongname om alle assembly's met de opgegeven sterke naam te registreren. Geef voor strongname de tekenreeks hexadecimale cijfers op die de tokenized vorm van de openbare sleutel vertegenwoordigen. Zie de opties -t en -T om het token voor de openbare sleutel weer te geven. Voorzichtigheid: Gebruik deze optie alleen tijdens de ontwikkeling. Als u een assembly toevoegt aan de lijst voor verificatie overslaan, ontstaat er een beveiligingsprobleem. Een kwaadwillende assembly kan de volledig opgegeven assemblynaam (assemblynaam, versie, cultuur en token voor openbare sleutels) van de assembly gebruiken die is toegevoegd aan de verificatielijst overslaan om de identiteit ervan te vervalsen. Hierdoor kan de schadelijke assembly ook verificatie overslaan.
-Vu assembly De registratie van de assembly ongedaan maken voor het overslaan van de verificatie. Dezelfde regels voor de naamgeving van assembly's die van toepassing zijn op -Vr zijn van toepassing op -Vu.
-Vx Hiermee verwijdert u alle vermeldingen voor het overslaan van verificatie.
-? Geeft de syntaxis van de opdracht en opties voor het hulpprogramma weer.

Notitie

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

Opmerkingen

De opties -R en –Rc zijn handig voor assembly's die zijn ondertekend met vertraging. In dit scenario is alleen de openbare sleutel ingesteld tijdens het compileren en wordt de ondertekening later uitgevoerd, wanneer de persoonlijke sleutel bekend is.

Notitie

Voor parameters (bijvoorbeeld –Vr) die schrijven naar beveiligde resources, zoals het register, voert u 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 met het AT_KEYEXCHANGE algoritme worden gegenereerd, genereren een fout.

Voorbeelden

Met de volgende opdracht maakt u een nieuw, willekeurig sleutelpaar en slaat u dit op 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 opgehaald uit keyPair.snk en opgeslagen in publicKey.snk.

sn -p keyPair.snk publicKey.snk

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

sn -tp publicKey.snk

Met de volgende opdracht wordt de assembly MyAsm.dllgecontroleerd.

sn -v MyAsm.dll

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

sn -d MyContainer

Zie ook