VSIX パッケージの署名
Visual Studio で実行する前に拡張機能アセンブリに署名することは必須ではありませんが、署名することが推奨されています。
VSIX パッケージにデジタル署名を追加すると、拡張機能がセキュリティで保護され、改ざんが防止されます。 インストール時に、VSIX インストーラーに署名と証明書へのリンクが表示されます。 署名を更新せずに VSIX の内容が変更された場合、インストーラーでは無効なパッケージ署名についてのみユーザーに警告されます。 このガイドは、既にVSIX が作成済みであること前提にしています。
コード署名証明書を取得する
有効な証明書は、次のような公的証明機関から取得できます。
Windows から信頼されている証明機関の全一覧は、http://aka.ms/trustcertpartners から入手できます。
テスト目的には、自己発行した証明書を使用できます。 ただし、Visual Studio Marketplace では自己発行した証明書で署名された VSIX パッケージは許可されていません。 .NET CLI を使用した自己署名証明書の生成の詳細についてはこちらを参照してください。。
Sign CLI を使用した VSIX への署名
VSIXSignTool は Sign CLI (github.com) を優先するために非推奨になりました。 このツールは、Sign (nuget.org) の下に dotnet ツールとして NuGet に発行され、ローカル署名または Azure Key Vault クラウド署名の使用をサポートします。
ローカル署名の場合、Sign CLI では、次の場所の任意の組み合わせに格納された証明書と秘密キーがサポートされます。
PFX
ファイル、P7B
ファイルまたはCER
ファイル- Windows 証明書マネージャーにインポート済み
- Cryptographic Service Provider (CSP) 経由でアクセス可能な USB デバイスに格納済み
Sign CLI のインストール
Developer PowerShell インスタンスを開きます。
nuget.org が追加されており、NuGet ソースとして有効になっていることを確認します。
dotnet nuget list source
を使用してソースを確認するdotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
を使用してソースとして NuGet.org を追加する
dotnet tool install sign --version <version> --global
を実行して Sign をインストールします。ここで、<version>
は Sign (nuget.org) で使用可能な最新バージョンです。--global
はオプションであり、PATH 環境変数に自動的に追加される .NET ツールの既定の場所にツールをインストールします。
Sign 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
Sign CLI の使用
インストールが完了したら、sign code <command> <options>
を使用して Developer PowerShell インスタンスで Sign CLI にアクセスできます。 オプションの詳細については、「VSIX パッケージ用の Sign CLI リファレンス」を参照してください。
重要
Sign CLI では、有効なフィンガープリント アルゴリズムとして SHA-256
、 SHA-384
、および SHA-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"
Note
PFX ファイルには、署名に使用される証明書と秘密キーの両方が含まれており、拡張検証 (EV) と非 EV 署名に関する C/A ブラウザー フォーラムの要件に準拠していません。 Hardened Secure Module (HSM) デバイスに格納されている秘密キーのみを使用し、暗号化サービス プロバイダー (CSP) を使用してアクセスすることをお勧めします。
- Microsoft Certificate Manager と 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"
- 特定のキー コンテナーを使用した USB ドライブを使用した署名 (-csp および -k オプション):
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"