この記事では、証明書を使用して 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 エディターがタイム スタンプ サーバーへの接続を試行する回数。 (省略可能 - この設定を行わない場合、Visual Basic エディターはサーバーへの接続を 1 回だけ試行します) |
| HKCU\Software\Microsoft\VBA\Security\TimeStampRetryDelay | REG_DWORD | Visual Basic エディターがタイム スタンプ サーバーへの接続を再試行するまで待機する秒数 (ミリ秒)。 (省略可能 - これを設定しない場合、再試行の間に遅延はありません) |
作業中の TimeStampURL エントリを追加すると、マクロにデジタル署名するたびに、Visual Basic エディターによってタイム スタンプが自動的に追加されます。
追加注記
- ソリューションがテストされ、配布の準備ができた ら 、マクロに署名することをお勧めします。署名済みマクロ プロジェクトのコードが何らかの方法で変更されると、 そのデジタル署名は削除されます。 ただし、以前にコンピューターでプロジェクトの署名に使用されていた有効なデジタル証明書がある場合、マクロ プロジェクトは保存時に自動的に再署名されます。
- ユーザーが誤ってマクロ プロジェクトを変更して署名を無効にするのを防ぐ 1 つの方法は、署名を適用する前にマクロ プロジェクトをロックすることです。 デジタル署名を使用すると、署名後にプロジェクトが改ざんされていないことが保証されますが、プロジェクトを作成したことが証明されません。 マクロ プロジェクトをロックした場合でも、別のユーザーが署名を別の署名に置き換えることができます。 また、会社の管理者は、テンプレートとアドインに再署名して、承認済みのコンテンツのみが会社のコンピューターで実行されるようにすることもできます。
- マクロ プロジェクトにコードを追加するアドインを作成する場合、プロジェクトがデジタル署名されているかどうかを判別し、処理を続行する前に、そのユーザーに、署名されているプロジェクトを変更した場合の結果を通知できるようにしておくことが必要です。
- 商用証明書を使用するユーザーは、署名でサポートされているハッシュ アルゴリズムが制限されているため、ブロックが発生する可能性があります。 DWORD レジストリ キー値 V1HashEnhanced を追加して、別のハッシュ アルゴリズムを選択できます。HKCU\SOFTWARE\Microsoft\VBA\Security と値アルゴリズム 規則 (1 から SHA1、SHA256 に 2、SHA384 に 3、SHA512 に 4 つ、MD5 に他)。 この設定は、CC チャネルの最新バージョンで使用できます。
詳細情報
Microsoft 365 ファイルでマクロを有効または無効にする
注
この記事は、人工知能 (AI) の助けを借りて人によって作成されました。