VSIX パッケージへの署名
拡張機能アセンブリは、Visual Studio で実行する前に署名する必要はありませんが、これを行うことをお勧めします。
VSIX パッケージにデジタル署名を追加すると、拡張機能がセキュリティで保護され、改ざんが防止されます。 インストール時に、VSIX インストーラーに署名と証明書へのリンクが表示されます。 署名を更新せずに VSIX の内容が変更された場合、インストーラーは無効なパッケージ署名をユーザーに警告するだけです。 このガイドでは、既に VSIX が作成済みであることを前提としています。
コード署名証明書を取得する
有効な証明書は、次のようなパブリック証明機関から取得できます。
Windows によって信頼されている証明機関の完全な一覧は、http://aka.ms/trustcertpartnersから取得することもできます。
自己発行の証明書は、テスト目的で使用できます。 ただし、自己署名証明書を使用して署名された VSIX パッケージは、Visual Studio Marketplace では受け入れまれません。 .NET CLI を使用して自己署名証明書を生成するの詳細について説明します。
SIGN CLI を使用して VSIX に署名する
VSIXSignTool は、Sign CLI (github.com)を優先して非推奨になりました。 このツールは、Sign (nuget.org) の dotnet ツールとして NuGet に発行され、ローカル署名または Azure Key Vault クラウド署名の使用をサポートします。
ローカル署名の場合、Sign CLI では、次の場所の任意の組み合わせに格納された証明書と秘密キーがサポートされます。
PFX
ファイル、P7B
ファイル、またはCER
ファイル- Windows 証明書マネージャーにインポート済み
- 暗号化サービス プロバイダー (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 code -h
」と入力すると、コマンド ラインからヘルプを取得できます。
重要
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"
手記
PFX ファイルには、署名に使用される証明書と秘密キーの両方が含まれており、拡張検証 (EV) と非 EV 署名に関する C/A ブラウザー フォーラムの要件に準拠していません。 セキュリティで保護されたモジュール (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"
- 特定のキー コンテナー (-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"