首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空PrivateKey in x509certificate2

空PrivateKey in x509certificate2
EN

Stack Overflow用户
提问于 2015-07-07 16:21:21
回答 1查看 3.3K关注 0票数 3

我已经用私钥在本地机器商店(win7)上安装了证书。在c#代码中,我这样做:

代码语言:javascript
复制
        X509Certificate2 cert = null;
        var store = new X509Store(storeName, storeLocation);
        store.Open(OpenFlags.ReadOnly);
        try
        {
            var result = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            cert = result.Count > 0 
                ? result[0] 
                : null;
        }
        finally
        {
            store.Close();
        }
        return cert;

证书变量中,我有我的证书,但它有问题: HasPrivateKey是真,但PrivateKey没有任何对象。如果我用我的web应用程序的C#代码发送REST请求,我就会出错:

代码语言:javascript
复制
AcquireCredentialsHandle() failed with error 0X8009030D.
The request was aborted: Could not create SSL/TLS secure channel.

所有的权利被授予证书在商店。请帮帮忙,怎么了?

Certutil的结果是俄语(我用“*”隐藏安全信息):

代码语言:javascript
复制
certutil -store my "cf 35 63 34 14 30 a0 32 ca 4a 58 b9 7a 7a ab 18 a4 47 7d a4"
================ Сертификат 0 ================
Серийный номер: 100030
Поставщик: ******************************
 NotBefore: 07.07.2015 5:00
 NotAfter: 24.12.2023 4:59
Субъект: ********************************
Не корневой сертификат
Шаблон:
Хеш сертификата(sha1): cf 35 63 34 14 30 a0 32 ca 4a 58 b9 7a 7a ab 18 a4 47 7d a4
  Контейнер ключа = 94c3b04b44d51674a1b7de89c10bd7d7_09614f03-cc81-44e6-a978-81773242876c
  Простое имя контейнера: CertReq-ceda22d5-2893-496a-b8c1-5c9ceaed82f1
  Поставщик = Microsoft Strong Cryptographic Provider
Тест шифрования пройден
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-08 11:03:06

我已经猜到问题了。我从机器存储中删除证书,然后将已安装的证书从当前用户存储导出到.pfx文件中,并将其导入机器存储。现在PrivateKey有了对象。下一步,我将协议类型从Tls更改为Tls12(为Win7+工作):

代码语言:javascript
复制
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31274212

复制
相关文章

相似问题

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