Outlook 2013 のマクロにデジタル証明書で署名する

前の記事で Outlook 2013 で新規メールや返信、転送メールを作成した時に、Bcc 欄にメール アドレスを追加するマクロを紹介した。
Outlook (Office 全般) でマクロを使うには、デジタル証明書 (=電子証明書) による署名が必要だということも同じ記事で書き、とりあえずの措置として Outlook のセキュリティ レベルを下げて使う方法も紹介した。
しかし、いつまでもセキュリティ レベルを下げたままで使うのは不安が大きいので、できるだけ早くに作成したマクロにデジタル証明書による署名を施し、セキュリティ レベルを元に戻せるようにしたい。

デジタル証明書で署名するの方法は、マイクロソフト Office の Web サイトの「マクロ プロジェクトにデジタル署名を追加する」ページにきちんと書かれている。

署名するにあたって、デジタル証明書を手に入れる必要がある。
デジタル証明書はできればパブリック認証局 (認証機関、CA などとも呼ばれる) から発行されたものを使いたいが、有効期限ごとに費用がかかるのが難点だ。
プライベート認証局 (オレオレ認証局ともいう) を作って、そこからデジタル証明書を発行してもよいが、それよりも手軽な自己署名デジタル証明書を発行して使うことにする。

Outlook のマクロの署名に使える自己署名デジタル証明書は、スタート メニューの [すべてのプログラム - Microsoft Office - Microsoft Office ツール] の中にある「VBA プロジェクトのデジタル署名」を使って発行する。
...はずだが、Outlook (Office 2013) をインストールした Windows 8 にはそもそもスタート メニュー自体が存在しない。

スタート メニューの実体となるフォルダーを覗いてみたが、Office 2013 のショートカットが登録されている「C:ProgramDataMicrosoftWindowsStart MenuProgramsMicrosoft Office 2013Office 2013 ツール」フォルダーにも「VBA プロジェクトのデジタル署名」というショートカットが無い。
Office 2010 まではスタート メニューに「VBA プロジェクトのデジタル署名」があったはずだが、Offce 2013 からは無くなったのだろうか。

「VBA プロジェクトのデジタル署名」の実体のプログラム ファイルは selfcert.exe なのでこれを探したところ、C:Program Files (x86)Microsoft OfficeOffice15 フォルダーにあることが分かった。
もしこのプログラム ファイルがないのであれば、Office 2013 をインストールしたときに「VBA プロジェクトのデジタル証明書」をインストールしてないと思われるので、これをインストールすればいいだろう。

Office 2013 のインストール オプションで VBA プロジェクトのデジタル証明書をインストールするように指定する
Office 2021 のインストール フォルダーに selfcert.exe がある

C:Program Files (x86)Microsoft OfficeOffice15 フォルダーの selfsert.exe を実行すると、「デジタル証明書の作成」ダイアログが表示される。
このダイアログの「証明書の名前」欄にわかりやすい名前を入力したら、[OK] ボタンをクリックする。

「デジタル証明書」の「証明書の名前」欄にわかりやすい名前を入力して [OK] ボタンをクリックする

「SelfCert 成功」ダイアログが表示されたら、[OK] ボタンをクリックする。

[OK] ボタンをクリックする

これで自己署名証明書が作成できた。
作成した自己署名証明書は、コントロール パネルのインターネット オプションから確認できる。
インターネット オプションを開くと「インターネットのプロパティ」ダイアログが表示される。
「インターネットのプロパティ」ダイアログの「コンテンツ」タブにある [証明書] ボタンをクリックすると、「証明書」ダイアログが表示される。
「証明書」ダイアログの「個人」タブに、先ほど「証明書の名前」欄に入力した名前がある。

発行した自己署名証明書が登録されている

これでようやく、マクロに署名する準備が整った。

Outlook 2013 の Visual Basic Editor を開き、署名したいマクロが含まれたプロジェクトを選択しておく。
マクロへの署名はプロジェクト単位でしかできない。
署名したいマクロが含まれたプロジェクトを選択したら、メニュー バーの「ツール」メニューから「デジタル署名」を選択して実行する。

Visual Basic Editor のツール メニューからデジタル署名を実行

「デジタル署名」を選択して実行すると「デジタル署名」ダイアログが表示される。
二か所ある証明書欄のどちらにも「既定の証明書がありません」と表示されているはずだ。

署名に使うデジタル証明書を選択 するために「デジタル署名」ダイアログで「署名」のブロックにある「選択」ボタンをクリックすると、「Windows セキュリティ」ダイアログが開く。

「デジタル署名」ダイアログで「選択」ボタンをクリックする

さきほど selfcert.exe を使って作成したデジタル証明書が「Windows セキュリティ」ダイアログに表示されているはずだ。
デジタル証明書が複数ある時はここにその数だけ表示されるので、署名に使うデジタル証明書を選択する。
「OK」ボタンをクリックして「Windows セキュリティ」ダイアログを閉じると、「デジタル署名」ダイアログの「証明書」欄、「署名」欄にデジタル証明書の名前が表示される。

作成したデジタル証明書を確認して「OK」ボタンをクリックする

「デジタル署名」ダイアログの「証明書」欄、「署名」欄のデジタル証明書の名前が正しければ、「OK」ボタンをクリックしてダイアログを閉じる。
もしデジタル証明書の名前が間違っている (「Windows セキュリティ」ダイアログでデジタル証明書を間違えて選択してしまった) ときは、「選択」ボタンをクリックして正しいデジタル証明書を選択しなおせばいい。

「デジタル署名」ダイアログで「OK」ボタンをクリックする

「デジタル署名」ダイアログを閉じた時点で、マクロにデジタル証明書による署名が施されている。
最後にこのマクロ (VBA プロジェクト) を保存する。

うっかりとマクロの保存を忘れて Outlook を終わらせてしまったときは、Visual Basic Editor を開くところからやり直す。
selfcert.exe で作ったデジタル証明書は、デジタル証明を作成したときに「SelfCert 成功」ダイアログが表示されたタイミングで確実に保存されているので、改めて作り直すことはない。

マクロにデジタル証明書で署名をしたら、Outlook を一度終わらせてから起動しなおしておこう。
なお、Outlook を終わらせる前に、前の記事で落としたマクロ読み込みに関するセキュリティ レベルを戻しておく。

Outlook 2013 の「ファイル」タブを開き、「オプション」の「セキュリティー センター」から「セキュリティ センターの設定」を開く。
セキュリティ センターのダイアログで「マクロの設定」を開いたら、「マクロの設定」グループにある [デジタル署名されたマクロに対しては警告を表示し、その他のマクロはすべて無効にする] を選択する。

マクロの読み込みに関するセキュリティ レベルを落とすまでは、署名していないマクロはすべて無効にされていた。
セキュリティ レベルを元に戻した格好になるが、マクロに署名したので無効なるようなことはない。
ただし、Outlook を起動して署名したマクロが読み込まれるときに「Microsoft のセキュリティに関する通知」ダイアログが表示されるので、「この発行者のドキュメントをすべて信頼する」ボタンか「マクロを有効にする」ボタンをクリックしてマクロを有効にさせる。

「Microsft Outlook のセキュリティに関する通知」ダイアログで「この発行者のドキュメントをすべて信頼する」ボタンをクリックする

「Microsoft のセキュリティに関する通知」ダイアログで、「この発行者のドキュメントをすべて信頼する」ボタンをクリックすれば、それ以降はこのマクロを読み込むときに「Microsoft のセキュリティに関する通知」ダイアログが表示されなくなる。
「マクロを有効にする」ボタンをクリックしたときは、Outlook を起動するたびにこのダイアログでどうするかを尋ねられる状態が続く。

なお、selfcert.exe で作成したデジタル証明書は、作成した年の 1 月 1 日から 6 年間の有効期限が定められている。
これはデジタル証明書を作成した日から、少なくとも 5 年で失効するということだ。
デジタル証明書が失効すれば、それを使った署名も無効になる。
つまり、ここで行ったマクロへの署名も今日から 5 年を過ぎた頃には無効になり、署名していないのと同じ扱いになる。
selfcert.exe で作成するデジタル証明書の有効期限を延ばす方法はない。
マクロを使い続けるなら、署名のもとになったデジタル証明書が失効する前に、定期的に新しくデジタル証明書を作成して、そのデジタル証明書で署名しなおす手間を惜しむことはできないだろう。

関連記事

「Outlook 2013 のマクロにデジタル証明書で署名する」への3件のフィードバック

  1. ※注意事項
    Office Personal 2013 だと selfsert.exe ファイルが有りません。
    デジタル署名出来ないので マクロを書き込んだファイルを
    使いたい場合 最低のマクロセキュリティーで運用可能。
    でも……
    デジタル署名出来る良い方法が在れば教えて下さい。

  2. 残念ながら Office の personal 版を持ち合わせていないために確認ができません。
    もしかすると、「VBA プロジェクトのデジタル証明書」が personal 版では提供されていないのかもしれません。
    何処かからダウンロードできないか探してみましたが、どうやらこれもなさそうです。
    有益な情報を提供できずに申し訳ありません。

  3. 記事を参考にさせて頂きました、ありがとうございます。

    因みにx64環境の場合、以下のディレクトリを参照すると良いかと。
    C:\Program Files\Microsoft Office 15\root\office15
    ・SELFCERT.EXE

コメントを残す