Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们如何在CertStore中存储使用密码保护的pfx文件,如何使用密码检索它_C#_Certificate - Fatal编程技术网

C# 我们如何在CertStore中存储使用密码保护的pfx文件,如何使用密码检索它

C# 我们如何在CertStore中存储使用密码保护的pfx文件,如何使用密码检索它,c#,certificate,C#,Certificate,是否可以使用密码保护存储在Cert Store中的pfx证书 我有以下功能,这是试图导出pfx文件使用密码和存储到客户端存储 public bool StoreCertificate(StoreName storeName, StoreLocation storeLocation,X509Certificate2 cert,String password, X509KeyStorageFlags keyStoreFlags = X509KeyStorageFlags.Persis

是否可以使用密码保护存储在Cert Store中的pfx证书

我有以下功能,这是试图导出pfx文件使用密码和存储到客户端存储

public bool StoreCertificate(StoreName storeName, StoreLocation storeLocation,X509Certificate2 cert,String password,
        X509KeyStorageFlags keyStoreFlags = X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet)
{
        var store = new X509Store(storeName, storeLocation);

        try
        {
            store.Open(OpenFlags.ReadWrite);

            byte[] pfx = cert.Export(X509ContentType.Pfx, password);
            cert = new X509Certificate2(pfx, password, keyStoreFlags);
            store.Add(cert);
            store.Close();
        }
        catch (Exception error)
        {
            m_log.LogError("Add to certificate store failed" + error.ToString());
            return false;
        }
        finally
        {
            if (store != null)
            {
                store.Close();
            }
        }
        return true; 
}
但在检索时,我可以使用以下简单的函数在没有任何密码的情况下检索所有内容

public X509Certificate2 LoadFromStore(StoreName storeName, StoreLocation storeLocation, String password, String subject, X509KeyStorageFlags keyStoreFlags = X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet )
{
        var store = new X509Store(storeName, storeLocation);

        try
        {
            store.Open(OpenFlags.ReadWrite);

            foreach (var c in store.Certificates)
            {
                if (c.Subject.Contains(subject))
                {
                    return c;
                }
            }
        }
        finally
        {
            if (store != null)
            {
                store.Close();
            }
        }
        return null;
}
在存储到CertStore时,是否有任何简单的方法可以保护包含私钥的证书内容

或者

我们是否需要与用户帐户关联