我有一个 Apache (xampp/wamp) 服务器,它在端口 443 上提供 SSL 连接。它使用两个证书文件:server.cert 和 server.key 当后者包含私钥时。
我有另一台服务器配置为侦听端口 843 上的请求(闪存策略的东西),并使用 C# 编写的一些文本回复来响应某个请求,这些文本回复单独运行。
为了实现 SSL 连接,我使用了一个名为 SecureSocket 的弹性对象,它允许这样做,但是,它使用原始服务器证书来加密请求。
我的目标是教我的 843 C# 服务器解密发送的数据并加密回复,为此我在 C# 中使用 X509Certificate 对象。
但是,由于 pub 和 priv 密钥位于不同的文件上,我在以下方面得到了 FALSE:
string text = System.IO.File.ReadAllText(@"C:\xampp\apache\conf\ssl.crt\server.crt");
UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] byteCert = encoding.GetBytes(text);
X509Certificate2 uberCert = new X509Certificate2();
uberCert.Import(byteCert);
Console.WriteLine("Has privateKey:" + uberCert.HasPrivateKey.ToString());
Console.WriteLine("PrivateKey: \n" + uberCert.PrivateKey);
显然, uberCert.HasPrivateKey 上的 False 来自于私钥位于不同文件中的事实,所以我的问题是:
1.如何使用 X509Certificate2 对象读取私钥?2.我如何使用公钥来解密收到的消息以及如何用私钥重新加密它(为了发回加密的响应)?
提前致谢,
麦克风。