私は問題に取り組んできました。多分、皆さんは私を正しい方向に向けることができます.
https接続を介して、Webサーバー上でpdfにデジタル署名しようとしています。
ページの読み込み時に私はそうしています:
HttpClientCertificate cs = Request.ClientCertificate;
X509Certificate card = new X509Certificate(cs.Certificate);
Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(card.GetRawCertData())};
コードの最後の行で、「m_safeCertContext は無効なハンドルです」というエラーが表示されます。
その点に注意してください:
- 2 つの完全に異なる証明書を使用しても同じエラーが発生します。
- 証明書は "card" 変数に取得されています。
- 以前はカードを X509Certificate2 に取得していましたが、昨日どこかで読んだところ、X509Certificate としてキャストしてから X509Certificate2 にダウンキャストすることでエラーを解決できることがわかりませんでした。それは「うーん...これは意味がありませんが、まだ試していません」という瞬間の1つでした。
- すべてのメソッドとクラスにプロパティを追加
[System.Security.SecurityCritical, System.Security.SecurityTreatAsSafe]
して、それが機能するかどうかを確認しようとしました...そのような運はありません。
誰でもヒントを教えてもらえますか?