다음을 통해 공유


강력한 이름 도구(Sn.exe)

강력한 이름 도구를 사용하면 강력한 이름으로 어셈블리에 서명할 수 있습니다. Sn.exe를 실행하면 키 관리, 서명 생성 및 서명 확인을 위한 옵션이 제공됩니다.

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

매개 변수

옵션 설명

-c [csp]

강력한 이름 서명에 사용할 기본 CSP(암호화 서비스 공급자)를 설정하며, 이 설정은 컴퓨터 전체에 적용됩니다. CSP 이름을 지정하지 않으면 현재 설정이 지워집니다.

-d container

지정된 키 컨테이너를 강력한 이름 CSP에서 삭제합니다.

-D assembly1 assembly2

두 개의 어셈블리가 서명만 다른지 확인합니다. 이 옵션은 다른 키 쌍을 사용하여 어셈블리를 다시 서명한 후의 검사 방법으로 종종 사용됩니다.

-e assembly outfile

assembly에서 공개 키를 추출하여 outfile에 저장합니다.

-h

이 도구의 명령 구문 및 옵션을 표시합니다.

-i infile container

지정된 키 컨테이너에 있는 infile에서 키 쌍을 설치합니다. 키 컨테이너는 강력한 이름 CSP에 상주합니다.

-k [keysize] outfile

지정한 크기의 새 RSACryptoServiceProvider 키를 생성하여 지정된 파일에 씁니다. 공개 키와 개인 키 모두 이 파일에 작성됩니다.

키 크기를 지정하지 않으면 Microsoft 고급 암호화 공급자가 설치된 경우 기본적으로 1,024비트 키가 생성되고 그렇지 않은 경우 512비트 키가 생성됩니다.

keysize 매개 변수는 Microsoft 고급 암호화 공급자가 설치된 경우 8비트씩 증가시킬 수 있는 384비트에서 16,384비트까지의 키 길이를 지원합니다. Microsoft Base Cryptographic Provider가 설치된 경우에는 8비트씩 증가시킬 수 있는 384비트에서 512비트까지의 키 길이를 지원합니다.

-m [y|n]

키 컨테이너가 컴퓨터 관련 컨테이너인지 아니면 사용자 관련 컨테이너인지를 지정합니다. y를 지정하면 키 컨테이너는 컴퓨터 관련 컨테이너가 됩니다. n을 지정하면 키 컨테이너는 사용자 관련 컨테이너가 됩니다.

y나 n을 모두 지정하지 않으면 현재 설정이 표시됩니다.

-o infile [outfile]

infile에서 공개 키를 추출하여 .csv 파일에 저장합니다. 공개 키의 각 바이트는 쉼표로 구분됩니다. 이 형식은 키에 대한 참조를 소스 코드의 초기화된 배열로 하드 코드하는 데 유용합니다. outfile을 지정하지 않으면 출력 파일은 클립보드에 넣어집니다.

참고

이 옵션은 입력 파일에 공개 키만 있는지는 확인하지 않습니다. infile에 개인 키를 포함한 키 쌍이 들어 있으면 개인 키도 추출됩니다.

-p infile outfile

infile의 키 쌍에서 공개 키를 추출하여 outfile에 저장합니다. 이 공개 키는 어셈블리 링커(Al.exe)/delaysign+/keyfile 옵션을 사용하여 어셈블리 서명을 연기하는 데 사용될 수 있습니다. 어셈블리 서명이 연기되면 컴파일 타임에 공개 키만 설정되고, 나중에 개인 키를 알게 될 때 추가할 서명을 위한 공간이 파일에 예약됩니다.

-pc container outfile

container의 키 쌍에서 공개 키를 추출하여 outfile에 저장합니다.

-q[uiet]

자동 모드를 지정합니다. 즉, 성공 메시지가 표시되지 않도록 합니다.

-R[a] assembly infile

infile에 있는 키 쌍을 사용하여 이전에 서명했거나 서명을 연기한 어셈블리에 다시 서명합니다.

-Ra를 사용하는 경우 어셈블리에 있는 모든 파일에 대해 해시가 다시 계산됩니다.

-Rc[a] assembly container

container에 있는 키 쌍을 사용하여 이전에 서명했거나 서명이 연기된 어셈블리에 다시 서명합니다.

-Rca를 사용하는 경우 어셈블리에 있는 모든 파일에 대해 해시가 다시 계산됩니다.

-Rh assembly

어셈블리에 있는 모든 파일에 대해 해시를 다시 계산합니다.

-t[p] infile

infile에 저장된 공개 키의 토큰을 표시합니다. infile의 내용은 이전에 -p를 사용하여 키 쌍 파일로부터 생성된 공개 키여야 합니다. -t[p] 옵션을 사용하여 키 쌍 파일에서 직접 토큰을 추출하지 마십시오.

공개 키에서 해시 함수를 사용하여 토큰을 계산합니다. 공용 언어 런타임에서는 공간을 절약하기 위해 강력한 이름을 가진 어셈블리에 대한 종속성을 기록할 때 매니페스트의 공개 키 토큰을 다른 어셈블리에 대한 참조의 일부로 저장합니다. -tp 옵션을 사용하면 공개 키와 토큰이 모두 표시됩니다.

이 옵션은 어셈블리 서명을 확인하지 않으며 신뢰 결정을 내리는 데 사용해서는 안 됩니다. 이 옵션은 원시 공개 키 토큰 데이터만 표시합니다.

-T[p] assembly

assembly 에 대한 공개 키 토큰을 표시합니다. assembly는 어셈블리 매니페스트가 들어 있는 파일의 이름이어야 합니다.

공개 키에서 해시 함수를 사용하여 토큰을 계산합니다. 런타임에서는 공간을 절약하기 위해 강력한 이름을 가진 어셈블리에 대한 종속성을 기록할 때 매니페스트의 공개 키 토큰을 다른 어셈블리에 대한 참조의 일부로 저장합니다. -Tp 옵션을 사용하면 공개 키와 토큰이 모두 표시됩니다.

이 옵션은 어셈블리 서명을 확인하지 않으며 신뢰 결정을 내리는 데 사용해서는 안 됩니다. 이 옵션은 원시 공개 키 토큰 데이터만 표시합니다.

-TS assembly infile

infile의 키 쌍을 사용하여 서명되거나 부분적으로 서명된 assembly의 서명을 테스트합니다.

-TSc assembly container

container 키 컨테이너의 키 쌍을 사용하여 서명되거나 부분적으로 서명된 assembly의 서명을 테스트합니다.

-v assembly

assembly에 있는 강력한 이름을 확인합니다. 여기에서 assembly는 어셈블리 매니페스트가 들어 있는 파일의 이름입니다.

-vf assembly

assembly 에 있는 강력한 이름을 확인합니다. -v 옵션과는 달리 -vf 옵션을 사용하면 -Vr 옵션으로 비활성화된 경우에도 확인이 수행됩니다.

-Vl

사용 중인 컴퓨터에서 강력한 이름 확인을 위한 현재 설정이 표시됩니다.

-Vr assembly [userlist] [infile]

확인을 건너뛸 assembly를 등록합니다. 선택적으로, 쉼표로 구분된 사용자 이름 목록을 지정할 수도 있습니다. infile을 지정하면 확인은 활성화된 상태로 유지되지만 infile의 공개 키는 확인 작업에 사용됩니다. Assembly*, strongname 형식으로 지정하여 지정된 강력한 이름을 가진 모든 어셈블리를 등록할 수 있습니다. Strongname은 공개 키의 토큰 형식을 나타내는 16진 문자열로 지정해야 합니다. 공개 키 토큰을 표시하려면 -t-T 옵션을 참조하십시오.

경고

개발하는 동안에만 이 옵션을 사용합니다. 어셈블리를 확인 생략 목록에 추가하면 보안상 허점이 발생합니다. 악의적인 어셈블리가 확인 생략 목록에 추가된 어셈블리의 정규화된 어셈블리 이름(어셈블리 이름, 버전, culture 및 공개 키 토큰)을 사용하여 해당 어셈블리의 ID를 모방할 수 있습니다. 이렇게 되면 악의적인 어셈블리도 확인을 건너뛸 수 있습니다.

-Vu assembly

확인을 건너뛸 assembly를 등록 취소합니다. -Vr에 적용되는 것과 동일한 어셈블리 명명 규칙이 -Vu에도 적용됩니다.

-Vx

확인을 건너뛸 모든 엔트리를 제거합니다.

-?

이 도구의 명령 구문 및 옵션을 표시합니다.

참고

Sn.exe의 모든 옵션은 대/소문자가 구분되므로 표시된 대로 정확히 입력해야만 도구에서 제대로 인식합니다.

설명

-R–Rc 옵션은 서명이 연기된 어셈블리에 유용합니다. 이 시나리오에서는 컴파일 타임에 공개 키만 설정되고, 나중에 개인 키를 알게 될 때 서명이 수행됩니다.

예제

다음 명령을 사용하여 난수 키 쌍을 새로 만들어 keyPair.snk에 저장합니다.

sn -k keyPair.snk

다음 명령을 사용하여 keyPair.snk에 있는 키를 강력한 이름 CSP의 MyContainer 컨테이너에 저장합니다.

sn -i keyPair.snk MyContainer

다음 명령을 사용하여 keyPair.snk에서 공개 키를 추출하여 publicKey.snk에 저장합니다.

sn -p keyPair.snk publicKey.snk

다음 명령은 publicKey.snk에 들어 있는 공개 키와 공개 키의 토큰을 표시합니다.

sn -tp publicKey.snk

다음 명령을 사용하여 어셈블리 MyAsm.dll을 확인합니다.

sn -v MyAsm.dll

다음 명령을 사용하여 기본 CSP에서 MyContainer를 삭제합니다.

sn -d MyContainer

참고 항목

참조

.NET Framework 도구
어셈블리 링커(Al.exe)
SDK 명령 프롬프트

개념

강력한 이름의 어셈블리