マクロのデジタル署名

概要

 EXCELなどのマクロを使う場合は、マクロを実行する前に「マクロを有効にする」ボタンを押してから実行すれば、安全にマクロを使うことができます。ところが、意味も分からないでマクロを有効にしてしまう人が増えたのか、セキュリティ強化として、デフォルトでは信頼できるデジタル署名がないマクロは動作しなくなってしまいました。
 そこで、マクロに信頼できるデジタル署名を追加することにしましたので、私の備忘録として、作業手順などをまとめておきます。

デジタル証明書

 マクロにデジタル署名をするためには、署名が信頼できることを証明するために、デジタル証明書が必要となります。デジタル証明書は、VeriSignやSectigoなどの認証機関に申請し発行してもらう方法と、自分で認証局を作成して発行する方法があります。 認証機関に発行してもらった証明書はそのまま使えますが、自分で認証局を作成して発行した自己署名証明書は、利用するパソコンに証明書を登録する必要があります。登録さえ行えば、認証機関に発行してもらった証明書と同等に扱えるようになります。
 認証機関に証明書を発行してもらうと、定期的に費用が発生するので、ここでは、自己署名証明書を利用する方法を利用しています。

自己署名証明書の作成方法(マクロ作成者用)

 マクロ作成者は、最初に自己署名証明書を作成する必要があります。マクロ利用者は、マクロ作成者から証明書をもらうだけですので、この作業は不要です。
 自己署名証明書を作成する方法には、OpenSSLを利用する方法や、MicrosoftOfficeに付属するSelfSertを利用する方法など、いろいろな方法があります。
 MicrosoftのSelfSertの方が、作成は簡単なのですが、秘密鍵をエクスポートすることができないという問題があります。秘密鍵をエクスポートできないと、複数のパソコンでマクロの修正ができないとか、パソコンが壊れると今までのデジタル証明書でマクロの修正ができなくなってしまいます。
 私は、MicrosoftのSelfSertでデジタル証明書が利用できることまで確認しましたが、秘密鍵のエクスポートができなかったため、OpenSSLを使った方法を利用しています。

自己署名証明書の確認方法

 自己署名証明書ファイルは、拡張子が.cerのファイルとして作成されます。 .cerファイルをダブルクリックすることで、証明書の内容を確認することができます。

作成した自己署名証明書

自己署名証明書のインストール方法

 自己署名証明書は、作成しただけでは信頼されていません。 .cerファイルのプロパティで確認できます。

信頼されていない自己署名証明書

 証明書を信頼させるために、次の手順で証明書のインストールを行う必要があります。 証明書のインストールは、信頼できる人から入手した証明書以外はインストールしてはいけません。 このWebページを参照すれば、私と同じ内容の証明書を作成することは簡単にできてしまいます。 ですから、証明書の内容よりも、入手した人の信頼度が重要です。
 自己署名証明書のインストールは、有効期間内であれば、最初に1回だけ行えば良いです。 今回は、有効期間を10年として作成してありますので、再インストールはほとんど必要ありません。

利用するパソコンで、証明書(*.cer)をダブルクリック
「証明書のインストール」を行う
「現在のユーザ」を選択する
「証明書をすべての次のストアに配置する」を選択する
参照で「信頼されたルート証明機関」を選択する

 インストールが終わると、証明書が信頼されます。 .cerファイルのプロパティで確認できます。

信頼されている自己署名証明書

 「ファイル名を指定して実行」で、「certmgr.msc」を起動して、 「信頼されたルート証明機関」「証明書」に、登録されていることを確認します。 certmgrが起動中の場合、一度、終了しないと反映されないようです。

信頼されたルート証明機関の確認

 ここでは、証明書を「現在のユーザ」にインストールしていますが、複数ユーザで利用する場合は「ローカルコンピュータ」にインストールすることも可能です。この場合、証明書管理画面は、「certmgr.msc」ではなく「certlm.msc」を利用するようです。

マクロの設定方法

 マクロを利用するパソコンの「マクロの設定」を確認し、設定を行います。

EXCELを起動する
「ファイル」「オプション」を開く
「トラストセンター」「トラストセンターの設定」を開く
※Office2016など「セキュリティセンター」と名前が異なる場合がある
「マクロの設定」で「デジタル署名されたマクロを除き、すべてのマクロを無効にする」に設定
※セキュリティは甘くなるが、「警告を表示してすべてのマクロを無効にする」でも動作する

マクロへの署名方法(マクロ作成者用)

 マクロ作成者は、マクロに署名を登録しておく必要があります。 有効期間内であれば、最初に1回だけ登録しておけば、保存する毎に登録した署名が使われます。

EXCELを起動する
「表示」「マクロ」を選択
マクロを選択し「編集」画面を表示する
「ツール」「デジタル署名」を開く
「署名の選択」で、証明書を選択する
ファイルを上書き保存する

マクロの配布について

 マクロを配布する場合、有効期間内であれば、最初の1回は証明書とマクロをセットで配布し、証明書のインストールをしてもらう必要がありますが、2回目以降は、マクロだけの配布で大丈夫です。
 デジタル署名付きのマクロを、配布先で修正することは可能ですが、デジタル署名は消えるため、マクロが動作しなくなることがあります。 当然ですが、マクロを修正する人は、自分のデジタル署名で署名しなおす必要があります。

デジタル署名付きマクロのサンプル

 このWebページの内容で作成したデジタル署名付きマクロを試してみたい方は、ダウンロードできます。
 ダウンロードしたhello.zipを展開すると、ash.cerとEXCELマクロ.xlsmが格納されています。
 ash.cerは、このWebページで紹介している自己署名デジタル証明書ですので「自己署名証明書の確認方法」の手順で確認後「自己署名証明書のインストール方法」の手順でインストールします。
 EXCELマクロ.xlsmは、下記の画面のように「Hello World」というボタンをクリックすると、「Hello World.」というメッセージを表示するだけのマクロです。 サンプルを実行する前に、必ず、ソースの内容や、デジタル証明書の内容も確認しましょう。

サンプルの実行結果
サンプルのソース内容

マクロがエラーになる場合の対処方法

 ダウンロードしたマクロには、セキュリティフラグが付いていて実行できない場合があります。 このような場合は、マクロファイルのプロパティを表示し、セキュリティの「許可する」をチェックしてください。

ファイルのプロパティ

 また、証明書をインストールする前にマクロを実行してしまった場合など、マクロが信頼できないという情報をWindowsが覚えていることがあります。この情報は証明書をインストールしても消えないようです。このような場合は、トラストセンターのセキュリティの設定を解除し、マクロを実行後、セキュリティの設定を戻すと、マクロが信頼できないという情報が消えるようです。


Copyright (C) ASH Joe Masumura