SelfCert エラー : 証明書を作成中にエラーが発生しました。 Selfcert で証明書を作成できませんでした。

Selfcert で証明書を作成できませんでした

SelfCert エラー : 証明書を作成中にエラーが発生しました。 Selfcert で証明書を作成できませんでした。

この親切なメッセージは、VBA プロジェクトのデジタル証明書 が出した。

translate to English

ウェブでの調査

  1. 「 selfcert error 」 で検索すれば、同様の事例がヒットする。
  2. 代替案以外の方法で、直接解決できた事例は無い。
  3. 代替案
    • selfcert.exe でなく、別のフリーツールで証明書を作る。
    • 新規ユーザーに移行すればエラーが出ない。

デスクトップでの調査

  1. Windows Vista + IE8 + Office 2007
  2. 新規ユーザーで試す。
  3. 管理者でなく、通常ユーザーでも問題なく作れる。
  4. 作成前後をつぶさに見ていくと、次の個所に気づいた。
    1. レジストリA: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
    2. フォルダB: AppData\Roaming\Microsoft\SystemCertificates
    3. フォルダC: AppData\Roaming\Microsoft\Crypto

SelfCert が使うリソース

  1. レジストリA
    • {5E6AB780-7743-11CF-A12B-00AA004AE837}, {75048700-EF1F-11D0-9888-006097DEACF9} などがある。
    • Count の下に、HRZR_PGYFRFFVBA の文字がある。 VBA か?
    • ツール\\ION プロジェクトのデジタル証明書.yax の文字がある。どうやら関係している。
    • 中に入っているランダムな数字などが、アカウントによって異なるため、単純にコピーしても使えない。
  2. フォルダB
    • My\Keys の中に、 SelfCert の鍵らしきファイルがある。
    • このフォルダは、 IE を初めて起動したときに作成される。おそらく、その際にレジストリAに初期値が与えられる。
    • My\Keys は、 selfcert を一度も実行していないアカウントには存在しない。
  3. フォルダC
    • この中に RSA 鍵がある。
    • このフォルダは、 selfcert を一度も実行していないアカウントには存在しない。
  4. フォルダはいずれも、 IE がブロックしているので、ログオン中は削除などできない。

解決手順

  1. レジストリAの中身を削除する。 UserAssist というキーは残し、その配下のキーをすべて削除した。
  2. ログアウトし、管理者でログインする。
  3. 対象アカウントのユーザーフォルダで、フォルダBとフォルダCを削除する。
  4. 対象アカウントでログインする。
  5. IE を起動する。レジストリAとフォルダBが作成されたことを確認する。
  6. VBA プロジェクトのデジタル証明書 selfcert.exe を実行する。
  7. 証明書が作成され、フォルダCが作成された。

原因の推測

  1. 古いバージョンの IE で証明書を発行したアカウントで、IE8 にアップグレードしてから証明書を発行した際に、このエラーが起きるようだ。
  2. IE の修正の中で、証明書の管理ルールが変更されたことによるのだろう。
  3. 古いルールでの発行履歴があるとエラーが出ていた。
  4. 発行履歴の無いアカウントや、新規作成のアカウントだと正常に動いたのはそのためだろう。
    inserted by FC2 system