この記事では、証明書を使用して Windows 上のマクロ プロジェクトにデジタル署名を行う方法について説明します。 デジタル証明書をまだお持ちでない場合は、取得する必要があります。
ヒント
自分のコンピューターでマクロ プロジェクトを使用またはテストするために、Selfcert.exe ツールを使用して独自の自己署名証明書を作成できます。 詳細については、以下をご覧ください。
デジタル証明書を取得する
デジタル証明書は、商用証明機関 (CA)、社内のセキュリティ管理者、または情報技術 (IT) の専門家から取得できます。
Microsoft 製品のサービスを提供する証明機関の詳細については、 Microsoft ルート証明書プログラムのメンバーの一覧を参照してください。
自己署名証明書を使用する
ユーザーが作成するデジタル証明書は、正式な信頼できる証明機関から発行されるものではないため、そのような証明を使って署名されたマクロ プロジェクトは自己署名のプロジェクトと呼ばれます。 Microsoft Office は、[ 証明書 - 現在のユーザー] ストアの [信頼されたルート証明書] フォルダーに追加された自己署名証明書があるコンピューター上でのみ、自己署名証明書を信頼します。 そのため、自分のマシンや管理するごく少数のマシンでテストしたり使用したりするには適していますが、マクロプロジェクトを他の人に配布するにはあまり適していません。
自己署名入りデジタル証明書を作成する
どのバージョンの Windows をご利用ですか?
Windows 10 以降
C:\Program Files (x86)\Microsoft Office\root\Office16 に移動します。
ヒント
このフォルダーに見つからない場合は、C:\Program Files\Microsoft Office\root\Office16 をクリックしてみてください
SelfCert.exe をクリックします。 [デジタル証明書の作成] ボックスが表示されます。
[証明書の名前] ボックスに、証明書のわかりやすい名前を入力します。
[OK] をクリックします。
[SelfCert 成功] というメッセージが表示されたら、[OK] をクリックします。
Windows 8
- C:\Program Files\Microsoft Office\<Office バージョン>\ に移動します。
- SelfCert.exe をクリックします。 [デジタル証明書の作成] ボックスが表示されます。
- [証明書の名前] ボックスに、証明書のわかりやすい名前を入力します。
- [OK] をクリックします。
- [SelfCert 成功] というメッセージが表示されたら、[OK] をクリックします。
個人用証明書ストアで証明書を表示する
- Microsoft Edge を開きます。
- アドレス バーに edge://settings/privacy を入力します。
- [ セキュリティ ] セクションまで下にスクロールし、[ 証明書の管理] を選択します。
Excel、PowerPoint、Publisher、Visio、Outlook、または Word で VBA マクロ プロジェクトにデジタル署名する
署名するマクロ プロジェクトが含まれたファイルを開きます。
[開発] タブの [コード] で [Visual Basic] をクリックします。
注
[開発] タブが使用できない場合: [ファイル ] タブをクリックします。[ オプション] をクリックします。 [リボンのユーザー設定] をクリックします。 [リボンのユーザー設定] の一覧で、[開発] をクリックし、[OK] をクリックします。
Visual Basic で、[ツール] メニューの [デジタル署名] をクリックします。
[デジタル署名] ダイアログが表示されます。
証明書を選択し、[OK] をクリックします。
注
デジタル証明書を選択していない場合や、別のデジタル証明書を使用する場合は、[選択] をクリックします。 証明書を選択し、[OK] をクリックします。
署名にタイム スタンプを追加する
他のユーザーが VBA マクロを実行すると、Office は署名と署名の対象となった証明書をチェックします。 署名にタイム スタンプを追加すると、証明書が失効しない限り、証明書の有効期限が切れた後でも、マクロは署名済みとして扱われます。 これにより、ユーザーの中断を減らすことができます。
有効期限が切れた証明書は、コードの検証に引き続き使用できますが、新しいコードの署名には使用できません。
タイム スタンプを追加するには、レジストリに 3 つのキーを追加する必要があります。
注意
レジストリを誤って編集すると、システムに重大な損害を与える可能性があります。 レジストリの変更を行う前に、コンピューター上の重要なデータをバックアップしてください。
| キー | タイプ | 説明 |
|---|---|---|
| HKCU\Software\Microsoft\VBA\Security\TimeStampURL | REG_SZ | 優先タイム スタンプ サーバーの URL。 (必須) |
| HKCU\Software\Microsoft\VBA\Security\TimeStampRetryCount | REG_DWORD | Visual Basic Editor が失敗するまでにタイムスタンプ サーバーへの接続を試行する回数。 (省略可能 - これを設定しない場合、Visual Basic Editor はサーバーへの接続を 1 回だけ試行します) |
| HKCU\Software\Microsoft\VBA\Security\TimeStampRetryDelay | REG_DWORD | Visual Basic Editor がタイムスタンプ サーバーへの接続を再試行するまでの待機時間 (秒数) (ミリ秒)。 (省略可能 - これを設定しない場合、再試行間の遅延はありません) |
作業 TimeStampURL エントリを追加すると、Visual Basic Editor はマクロにデジタル署名するたびに、自動的にタイム スタンプを追加します。
追加注記
- マクロには、ソリューションのテストが完了し、配布の準備が整 った後に のみ署名することをお勧めします。署名されたマクロ プロジェクト内のコードが何らかの方法で変更されると、 そのデジタル署名は削除されます。 ただし、以前にプロジェクトの署名に使用した有効なデジタル証明書がコンピューター上にある場合は、マクロ プロジェクトを保存すると自動的に再署名されます。
- ユーザーが誤ってマクロ プロジェクトを変更して署名が無効にならないようにする 1 つの方法は、署名を適用する前にマクロ プロジェクトをロックすることです。 デジタル署名により、プロジェクトに署名してから改ざんされていないことは保証されますが、プロジェクトを書いたことを証明するものではありません。 マクロ プロジェクトをロックした場合でも、他のユーザーが署名を別の署名に置き換えることができる場合があります。 企業の管理者は、テンプレートとアドインに再署名して、承認されたコンテンツのみが会社のコンピューターで実行されるようにすることもできます。
- マクロ プロジェクトにコードを追加するアドインを作成する場合、プロジェクトがデジタル署名されているかどうかを判別し、処理を続行する前に、そのユーザーに、署名されているプロジェクトを変更した場合の結果を通知できるようにしておくことが必要です。
- 商用証明書を使用するユーザーは、署名でサポートされているハッシュ アルゴリズムの制限により、ブロックに遭遇する可能性があります。 DWORD レジストリ キー値 V1HashEnhanced を追加して、HKCU\SOFTWARE\Microsoft\VBA\Security の下の値アルゴリズム ルール (1 から SHA1、2 から SHA256、3 から SHA384、4 から SHA512、その他を MD5) で別のハッシュ アルゴリズムを選択できます。 この設定は、CC チャネルの最新バージョンで使用できます。
詳細情報
Microsoft 365 ファイルでマクロを有効または無効にする
注
この記事は、人工知能 (AI) の助けを借りて人によって作成されました。