【发布时间】:2010-10-01 08:32:44
【问题描述】:
我一直在努力解决一个问题,也许你们可以指出我正确的方向。
我正在尝试通过 https 连接在网络服务器上对 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”变量 ok。
- 我曾经将卡转换为 X509Certificate2,但我昨天在某处读到,我无法发现该错误可以通过转换为 X509Certificate 然后向下转换为 X509Certificate2 来解决。这是“嗯……这没有任何意义,但我还没有尝试过”的时刻之一。
- 我已经尝试将
[System.Security.SecurityCritical, System.Security.SecurityTreatAsSafe]属性添加到所有方法甚至类中,以查看它是否可以工作......没有这样的运气。
谁能给我一个提示?
【问题讨论】:
-
我遇到了类似的问题,然后我意识到我在证书被使用之前就将其处理掉了。您能否检查一下您的证书在使用之前是否没有直接或间接地被处理掉。
-
@Gurpreet;我认为您的评论对我有所帮助,而且我在 Asp.net Core Startup.cs 文件中使用了“使用”语句(与签署 pdf 无关)
标签: c# digital-signature digital-certificate