アプリケーションにデジタル署名を追加する

Revit アドインを発行する場合は、独自の証明書を使用してそのアドインに署名を追加する必要があります。

独自の証明書を使用してアドインに署名を追加するには、最初に、デジタル証明書ベンダーからデジタル証明書を購入する必要があります。証明書ファイル(cer ファイル)または個人情報交換ファイル(pfx ファイル)を入手すると、SignTool を使用して DLL に署名を追加できるようになります。

または、Symantec 社の Secure App Service(https://www.symantec.com/code-signing/secure-app-service/)など、オンラインの Authenticode 署名サービスを使用することもできます。

デジタル証明書ベンダー

次に、デジタル証明書を発行しているいくつかのベンダーを示します。

SignTool を使用して署名する

.NET dll に署名するには、signtool.exe を使用することができます。 このツールは、Visual Studio とともに自動的にインストールされます。このツールを実行するには、開発者コマンド プロンプトを使用します。次に、コマンド ライン パラメータの形式を示します。

コマンド領域: SignTool の使用

signtool.exe sign /fd SHA256 /f <.pfx-file-name> /p <password> <file-to-sign>.dll

/fd は、使用するファイル ダイジェスト アルゴリズム用のフラグです。ここでは、SHA256 アルゴリズムを使用します。「SHA」は、「Secure Hash Algorithm (セキュア ハッシュ アルゴリズム)」 を表しています。SignTool の既定値は SHA1 ですが、より新しく安全性の高い SHA256 を使用することをお勧めします。<.pfx-file-name> は、ベンダーから入手した .pfx ファイル(個人情報交換ファイル)の名前です。<password> は、pfx ファイルを入手したときに指定したパスワードです。<file-to-sign>.dll は、署名する DLL の名前です。

たとえば、任意のフォルダでこのコマンドを実行した場合、以下のような実行結果になります。

コマンド領域: SignTool の例

"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool" sign /fd SHA256 /f "C:/Dev/MyCert.pfx" /p "password123" “C:/Dev/HelloRevit.dll”
注: SignTool の正確な場所は、使用する環境によって異なる場合があります。

信頼された証明書を使用して DLL に署名すると、アドインのロード時にセキュリティ警告ダイアログがポップアップ表示されなくなります。

アプリケーション プロジェクトのプロパティで、Visual Studio の[ビルド後のイベント]セクションにこのコマンドを挿入することもできます。

コマンド領域: ビルド後のイベントでの署名

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe" /fd SHA256 sign /f
"C:\Autodesk\MyCert.pfx" /p MyPassword "$(TargetDir)$(TargetFileName)"

署名する際に signtool.exe の /td スイッチと /tr スイッチを組み合わせてタイム スタンプを追加することもできます。そうしない場合、証明書の有効期限が切れると信頼されないアプリケーションになります。タイム スタンプを追加した場合、有効期限内にアプリケーションに署名すれば、その後は永続的に信頼されたアプリケーションになります。

コマンド領域: タイム スタンプの追加

signtool.exe timestamp /td sha256 /tr <URL-of-time-stamp-server> <file-to-sign>.dll

たとえば次の例では、Verisign 社のタイム スタンプ サーバーを使用しています。

コマンド領域: タイム スタンプの例

signtool.exe timestamp /td sha256 /tr "http://sha256timestamp.ws.symantec.com/sha256/" HelloRevit.dll
注: 上記の例では、sha256 タイムスタンプ付きの署名を行うために、/td sha256 スイッチと /tr スイッチを使用しています。2017 年 1 月 1 日以降、SHA1 タイムスタンプは Microsoft によって署名なしとして処理されるようになります。詳細については、この記事を参照してください。