首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从X509Certificate2中删除私钥

从X509Certificate2中删除私钥
EN

Stack Overflow用户
提问于 2017-10-25 08:40:31
回答 1查看 1.8K关注 0票数 2

我使用以下方法导出包含两个X509Certificate2对象的证书链:证书和颁发证书的证书颁发机构:

代码语言:javascript
复制
public void ExportCertificateChain(X509Certificate2 cert, X509Certificate2 ca, string outPath, string password)
{
    X509Certificate2Collection collection = new X509Certificate2Collection();
    collection.Add(cert); //certificate with private key

    //remove private key from CA, because don't want it to be usable for signing, we just want to install it to validate the first certificate
    ca.PrivateKey = null; //This throws an "Access Denied" exception!!!
    collection.Add(ca);

    var raw = collection.Export(X509ContentType.Pfx, password);
    File.WriteAllBytes(outPath, raw);                        
}

正如代码中的注释所告诉的,问题在于取消私钥会引发一个异常,告诉我“访问被拒绝”。

如何正确地从X509Certificate2对象中删除私钥(或者,如果没有私钥,如何从商店中获取私钥)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-25 08:59:24

嗯,我在等待答案的时候找到了一个解决办法,就是:

代码语言:javascript
复制
ca = new X509Certificate2(ca.Export(X509ContentType.Cert));

基本上,这是在没有私钥的情况下对CA证书进行动态导出,然后立即将其重新构建回一个新的X509Certificate2对象。

如果其他人指出了一个更“合适”的解决方案,那么这个问题还会有一些疑问。但这似乎效果很好。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46927771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档