C# 证书管理器中提供的代码bu的X.509证书中不存在私钥

C# 证书管理器中提供的代码bu的X.509证书中不存在私钥,c#,x509certificate,private-key,C#,X509certificate,Private Key,因此,我尝试使用证书在我的解决方案和基于SOAP的服务之间建立通信 我已将他们的证书和我的证书安装到证书存储中 我已确保我的证书具有与其对应的私钥: 但是,当从存储区将我的证书加载到代码中时,我得到错误“X.509证书中不存在私钥” 我打印了以下内容,可以看到私钥是空的,containsSprivateKey==False ClientCertificatePublicKey:System.Security.Cryptography.X509Certificates.PublicKey,Cli

因此,我尝试使用证书在我的解决方案和基于SOAP的服务之间建立通信

我已将他们的证书和我的证书安装到证书存储中

我已确保我的证书具有与其对应的私钥:

但是,当从存储区将我的证书加载到代码中时,我得到错误“X.509证书中不存在私钥”

我打印了以下内容,可以看到私钥是空的,containsSprivateKey==False ClientCertificatePublicKey:System.Security.Cryptography.X509Certificates.PublicKey,ClientCertificatePrivateKey:,containsSprivateKey False

到目前为止,我已经尝试:

将keystrageFlags设置为:

 X509KeyStorageFlags.MachineKeySet|
    X509KeyStorageFlags.PersistKeySet|
    X509KeyStorageFlags.Exportable
在应用程序池中将加载用户配置文件设置为true

下面是我如何从商店中读取证书的一个片段

private byte[] ReadCertificate(string certificateThumbprint)
        {
            X509Store store = new X509Store("MY",StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

            X509Certificate2Collection collection = 
            (X509Certificate2Collection)store.Certificates;
            X509Certificate2Collection signingCert = 
            collection.Find(X509FindType.FindByThumbprint, 
            certificateThumbprint,false);

            byte[] rawdata = signingCert[0].RawData;
            store.Close();
            return rawdata;
        }
有人知道我该怎么解决这个问题吗

byte[] rawdata = signingCert[0].RawData;
实际上,这只返回证书的公共部分,而不返回私钥引用。相反,您应该考虑返回整个<代码> X509CudiICATE2对象.< /P>