在c#中从文件中加载公钥
本文关键字:加载 公钥 文件 | 更新日期: 2023-09-27 18:13:59
我在加载私钥时遇到困难。我使用以下命令创建了一个证书:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
我为输出创建了一个GIST: https://gist.github.com/anonymous/5592135
static void Main(string[] args)
{
string location = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string certLocation = location + "''assets''certificate.crt";
string privateKeyLocation = location + "''assets''privateKey.key";
string xmlDocLocation = location + "''assets''sample.xml";
XmlDocument Doc = new XmlDocument();
Doc.Load(xmlDocLocation);
// read up the certificate
X509Certificate2 cert = new X509Certificate2(certLocation);
X509Certificate2 privateKey = new X509Certificate2(privateKeyLocation);
}
我的证书加载正常,但我无法获得私钥加载。我得到"找不到请求的对象"
我更愿意从文件中加载私钥和证书,而不是使用存储,这是可能的吗?我是否错误地生成证书和私钥?最后,我希望在xml文档中包含公钥,接收方将解析xml数据并验证私钥和公钥是否匹配。
如果您想避免使用证书存储,我建议您将CRT和密钥合并到一个PFX文件中。这里有一个链接,将讨论如何做到这一点(或只需谷歌"openssl创建pfx")。
https://www.globalsign.com/support/import/apache.php在您的代码中,请记住X509Certificate2对象(例如您的cert对象)将包括公钥和私钥-因此您不需要单独的私钥对象。当您创建PFX文件时,将提示您输入密码。该密码用于加密PFX的私钥部分。在创建X509Certificate2对象时,向它提供PFX文件的位置以及密码。下面是构造函数:
http://msdn.microsoft.com/en-us/library/ms148420.aspx 我不确定你的最终目标是什么。如果您希望客户机确保XML文件确实来自服务器并且没有被修改过,那么您应该考虑使用数字签名。简而言之,发送方用其私钥对XML文件的哈希签名,接收方使用发送方的公钥验证。