这与.NET/C#有关。假设PFX或PKCS#12文件中有一个证书+私钥(P521 ECC 1)。通过安装该证书(双击PFX或运行certutil-f-p mypfxpassword-importpfx MY someecert.PFX
),我们已将该证书及其私钥加载到Windows证书存储中。我注意到,如果证书是兼容的(例如p521曲线),它将自动安装为CNG证书/密钥。
var myCngKey = SomehowLoadTheCngKey("my ecc certificate"); // <== ??
var myDH = new ECDiffieHellmanCng(myCngKey);
.NET没有一个很好的压缩天然气API。如果你只看一下它们的API的表面,你就会发现它有点荒谬,特别是考虑到它们都是微软的,CNG是整个windows平台上所有加密API中最严重的一个。
因此需要使用CLRSecurity,它为C++CNG API提供了C#接口(通过P/Invoke)。即使这样,它也不是最好的API设计;但这有帮助。
// Load the cert, many ways, one implementation
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindBySubjectName, "My cert subject name", true);
store.Close();
if (certs.Count > 0)
cert = certs[0];
else
return;
// Magic happens here! We load the private CngKey (if it exists)
// You need CLR Security for this, it manages the P/Invoke
// into the C++ api behind the scenes.
var pvtCngKey = cert.GetCngPrivateKey();
// Create the DiffieHellman helper
var ecDh = new ECDiffieHellmanCng(ourPvtEcCngKey)
{
KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash,
HashAlgorithm = CngAlgorithm.Sha256
};
ECDiffieHellmanCngPublicKey theirPubCngKey = LoadOtherPartiesCngPublicKey(theirCert);
byte[] symKey = ecDh.DeriveKeyMaterial(theirPubCngKey);
单机版中使用的连接器标记。下面是xml。
我有许多方法,像下面这样使用X509Certificate2.PrivateKey 到目前为止,它们对存储在Windows证书存储区(其私钥可访问)中的证书工作良好。现在的问题是,我需要支持存储在HSM设备和Azure Key Vault HSM中的证书,其中私钥不能加载到内存中(因此PrivateKey属性为空)。 有没有什么技巧可以让X509Certificate2.PrivateKey或Ge
问题内容: 我的文件带有证书链-certificate.cer: 我需要将此证书链添加到密钥库。 我做的事: 结果,我在密钥库中只有1个证书。 但是应该有3. 什么地方可能出问题? 解决方案: CA向我发送了PKCS#7格式的证书。 我将它们存储在certificate.p7b文件中,然后通过以下命令将它们成功添加到密钥库中: 问题答案: 从keytool管理员中-如果以PKCS#7格式输入,它将
问题内容: 我们可以在密钥存储区中加载多个证书和密钥吗? 是否总是需要仅加载对(即证书和密钥一起)? 如果密钥库具有多个证书和密钥,那么当Java SSL尝试建立作为服务器的连接时,将选择哪个证书和密钥? 问题答案: 尽管这取决于KeyStore类型,但是通常,您可以在单个存储中存储多个私钥和证书。 基于Java的服务器使用哪种密钥和证书组合取决于应用程序的实现方式。许多应用程序允许您使用 别名
我使用Git for Windows(v2.30.1)创建了一个ed25519 ssh密钥,其中包含,并将其添加到我的帐户中。我通过从Git CMD验证了它的工作。 要将其加载到eclipse(V2020-12;EGit V5.11),我使用了以下代码: 对于私钥和公钥,我都得到了这个错误。EGITV5.4+“支持”ed25519键,但是我找不到关于如何将一个键放入Eclipse的说明(在这里应该
问题内容: 我正在通过GoDaddy设置SSL,以与AWS EC2上的node.js服务器一起使用。我一直无法启动它。 这是我尝试过的: 打算用于域:files.mysite.com 在服务器上,我运行: 然后,我得到CSR:vim files.mysite.csr 我从以下位置复制并粘贴: 最后还有一个空行,我使用rekey离开并粘贴到GoDaddy界面中。 然后,我下载godaddy密钥,该密