oopsの日記: Excel のマクロにデジタル署名
古い話題だろうけど、Excel のマクロにデジタル署名を付けるやり方。今のデフォルトのセキュリティ設定だと署名付いてないとマクロ実行されないし。
Office をインストールしたディレクトリの selfcert.exe を使用すると簡単だが、OpenSSL を使って作った自己証明書も使える。OpenSSL は Cygwin (ttp://cygwin.com) に付属してる他、ttp://www.slproweb.com/products/Win32OpenSSL.html からもバイナリが手に入るっぽい。
$ openssl genrsa -out foo.key 2048
とかやって、秘密キーを作る。2048は秘密キーのビット数で、1024ぐらいがいいみたい。selfcert.exeだと512ビットで小さいし、エクスポートできないから他の PC で同じデジタル署名つけれない問題がある。foo.key が秘密キーになる。
$ openssl req -new -x509 -days 3650 -key foo.key -out foo.crt
とやって証明書を作る。3650は3650日で10年の有効期限。デフォルトだと30日なんで。
Country Name (2 letter code) [AU]:.
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (eg, YOUR name) []:Foo
Email Address []:.
とか聞かれると思うが、Common Nameのところだけちゃんと設定して、後は"."にしとけばいい。foo.crt が証明書になる。最後に
$ openssl pkcs12 -export -in foo.crt -inkey foo.key -out foo.p12
とやってパスワードを入力すれば、pkcs#12形式のができる。
これを登録するわけだが、まず、IE のアイコンを右クリックとかして「インターネットのプロパティ」ダイアログを出してやる。コンテンツ→証明書でインポートボタン押して foo.p12 を選択ししてやると個人のところに出ると思う。
後は、ExcelのVBエディタでデジタル署名を付ける時、選択枝で出る。一般に配布するマクロに付けるやつはもっとちゃんとやって作ったコード証明書を使うべきだろうけど。
Excel のマクロにデジタル署名 More ログイン