Outlook には、外部メールを送信するときにポップアップを生成する VBA スクリプトがあります。どうやら、スクリプトの署名は週末に期限切れになったようです。署名した人はもうここにいません。DC の CA に証明書が表示されていますが、更新オプションがありません。
コード署名証明書を生成し、それをコンピューターにインポートしましたが、VBA エディターは と表示し続けますNo usable signing certificates are available
。証明書は証明書ストアに表示されます。テンプレートには、元の証明書「%ORG% Code Signing」ではなく「Code Signing」と表示されます。
自分が何をしているのかまったくわからず、ここまでたどり着くまでに何時間もオンラインで調べたり調査したりしてきました。行き詰まっており、これを再度署名するには助けが必要です。外部の受信者にユーザー プロンプトを表示するための、より優れた最新の方法がある場合は、お知らせください。
答え1
申し訳ありませんが、私はこの分野の専門家ではありませんが、それでも私の意見を述べてみたいと思います...
まず、自己署名証明書を試しましたか? デバッグが簡単になり、ローカルでのテストに役立ちます。 https://social.technet.microsoft.com/Forums/lync/en-US/6b06b276-4266-4f29-ae22-2a3c86c4238f/certificate-for-digital-signature?forum=outlook
次に、証明書と一緒に秘密鍵もインポートしましたか? 署名メカニズムを理解している限り、おそらく秘密鍵が必要になるでしょう (誤解を招くようでしたら申し訳ありませんが、秘密鍵のアイデアに納得している場合は、インストール方法を確認してください:https://security.stackexchange.com/questions/25996/windows で秘密キーをインポートする方法- CER の代わりに PFX が必要になります。そうしないと、秘密キーがインポートされません。
最後に、証明書ストアのどのコンテナーに証明書をインポートしましたか? これも結果に影響する可能性があります。 https://answers.microsoft.com/en-us/msoffice/forum/all/vba-i-installed-digital-signing-certificate-but/231529b1-8099-4c7b-9bb6-2c36aeba00a4
署名証明書を取得する手順
- 署名するコンピュータで、
Manage User Certificates
- 右クリック
Personal
>All Tasks
>Request New Certificate
- 選択
Active Directory Enrollment Policy
>Next
- テンプレートを選択し
Code Signing
てクリックEnroll
VBA エディターは証明書を認識し、スクリプトに署名できるようになります。
署名されたスクリプトをドメイン全体で使用する場合は、証明書をエクスポートし、スクリプトを使用する各マシンにインポートするグループ ポリシーに追加する必要があります。
答え2
インターネット オプション / コンテンツ / 証明書インターフェイスを介して証明書を次の 3 つのストア (個人、信頼された発行元、信頼されたルート証明機関) にインポートすることで、この問題を修正できました。
以前は、マシン レベルの「コンピューター証明書の管理」とユーザー レベルの「ユーザー証明書の管理」を使用して、3 つの場所すべてに証明書をインポートしていましたが、証明書は 6 つの場所すべて (マシン 3 か所、ユーザー 3 か所) に表示されていたにもかかわらず、Excel では認識されませんでした。
ただし、インターネット オプション UI を使用すると問題は解決しました。