다음을 통해 공유


VSIX 패키지 서명

확장 어셈블리는 Visual Studio에서 실행하기 전에 서명할 필요가 없지만 그렇게 하는 것이 좋습니다.

VSIX 패키지에 디지털 서명을 추가하면 확장이 보호되고 변조가 방지됩니다. 설치하는 동안 VSIX 설치 관리자가 서명과 인증서에 대한 링크를 표시합니다. 서명을 업데이트하지 않고 VSIX의 내용을 수정하는 경우 설치 관리자는 사용자에게 잘못된 패키지 서명만 경고합니다. 이 가이드에서는 VSIX 을 이미만들었다고 가정합니다.

코드 서명 인증서 가져오기

다음과 같은 공용 인증 기관에서 유효한 인증서를 가져올 수 있습니다.

Windows에서 신뢰하는 인증 기관의 전체 목록은 http://aka.ms/trustcertpartners에서 확인할 수 있습니다.

자체 발급 인증서를 테스트 목적으로 사용할 수 있습니다. 그러나 자체 발급 인증서를 사용하여 서명된 VSIX 패키지는 Visual Studio Marketplace에서 허용되지 않습니다. .NET CLI 사용하여 자체 서명된 인증서를 생성하는대해 자세히 알아봅니다.

서명 CLI를 사용하여 VSIX 서명

VSIXSignTool은 더 이상 사용되지 않으며, 대신 Sign CLI(github.com)가 권장됩니다. 이 도구는 nuget.org(Sign) 있는 dotnet 도구로 NuGet에 게시되며 로컬 서명 또는 Azure Key Vault 클라우드 서명 사용을 지원합니다.

로컬 서명의 경우 Sign CLI는 이러한 위치의 조합에 저장된 인증서 및 프라이빗 키를 지원합니다.

  • PFX, P7B또는 CER 파일
  • Windows 인증서 관리자로 가져오기
  • CSP(암호화 서비스 공급자)를 통해 액세스할 수 있는 USB 디바이스에 저장됨

Sign CLI 설치

  1. "개발자 PowerShell 인스턴스를 열어라."

  2. nuget.org NuGet 원본으로 추가되고 사용하도록 설정되어 있는지 확인합니다.

    • dotnet nuget list source 사용하여 원본 확인
    • dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json 사용하여 소스로 NuGet.org 추가
  3. dotnet tool install sign --version <version> --global <version>사용 가능한 최신 버전인 실행하여 Sign을 설치합니다.

    • --global 선택 사항이며 PATH 환경 변수에 자동으로 추가되는 .NET 도구 기본 위치에 도구를 설치합니다.

서명 CLI의 오프라인 설치

격리된 환경의 경우 최신 Sign CLI NuGet 패키지를 다운로드하고 다음을 사용하여 설치할 수 있습니다.

dotnet tool install --global --add-source <path-to-folder> <tool-name> --version <version>

예를 들어:

dotnet tool install --global --add-source D:\NuGetTools sign --version 99.0

서명 CLI 사용

설치되면 sign code <command> <options>사용하여 개발자 PowerShell 인스턴스에서 서명 CLI에 액세스할 수 있습니다. 옵션에 대한 세부 사항은 VSIX 패키지를 위한 서명 CLI 참조을 참조하세요. sign code -h입력하여 명령줄에서 도움말을 볼 수 있습니다.

중요하다

Sign CLI는 유효한 지문 알고리즘으로 SHA-256, SHA-384SHA-512 지원합니다. PowerShell을 사용하여 지문을 가져올 수 있습니다: Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize

  • SHA-256 지문이 있는 PFX 파일을 사용하여 서명:
sign code certificate-store -cfp 80BB567B...52CB95D4C -cf "D:\Certs\f5ec6169345347a7cd2f83af662970d5d0bfc914.pfx" -d "My VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"

메모

PFX 파일에는 서명에 사용되는 인증서와 프라이빗 키가 모두 포함되어 있으며 EV(확장 유효성 검사) 및 비 EV 서명에 대한 C/A 브라우저 포럼 요구 사항을 준수하지 않습니다. HSM(보안 모듈) 디바이스에 저장된 프라이빗 키만 사용하고 CSP(암호화 서비스 공급자)를 사용하여 액세스하는 것이 좋습니다.

  • Microsoft 인증서 관리자 및 SHA512 지문(-csp 옵션을 사용하여 서명):
sign code certificate-store -cfp A87A60A6F...894559B98 -csp "Microsoft Software Key Storage Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • USB 드라이브(-csp 옵션에서 프라이빗 키를 사용하여 서명):
sign code certificate-store -cfp B113E82D...F5CF294BE0B -csp "eToken Base Cryptographic Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • 특정 키 컨테이너(-csp 및 -k 옵션을 사용하여 USB 드라이브를 사용하여 서명):
sign code certificate-store -cfp 15BB56B0...1ACB959D0 -csp "eToken Base Cryptographic Provider" -k "NuGet Signing.629c9149345347cd2f83af6f5ec70d5d0a7bf616" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"