c# - 证书私钥

标签 c# .net ssl certificate x509certificate

我正在连接到服务器,并且在验证为客户端之后

sslStream = new SslStream(_serverStream, false, SslCertificateValidatorCallback);
sslStream.AuthenticateAsClient(host);

我想使用收到的证书作为服务器。是否可以?为此,我需要私钥,但此证书没有私钥。

所以我的问题是: 1.如果我有带公钥的证书,我可以在该证书上添加私钥吗? 2. 我可以根据收到的公钥和私钥创建新证书吗?

任何想法都会对我很有帮助。

谢谢

最佳答案

我建议对证书加密/非对称加密进行一些研究,因为您的问题表明您对该领域缺乏了解。不想无礼,只是说说。

为了将证书用作服务器,您必须已经拥有证书的私钥。

简而言之:

  1. 服务器绑定(bind)到端口并拥有带有公钥/私钥对的证书
  2. 向服务器发出请求
  3. 客户端使用证书验证服务器的身份
  4. 如果继续进行有效通信
  5. 公钥用于加密到服务器的流量
  6. 服务器使用其私钥解密流量

需要注意的是,证书一般只用于交换一个对称 key (对称加密速度更快)。因此,在证书通过验证后,将进行 key 交换,并使用对称加密 key 恢复通信。

Here is an article to get you started And here

具体回答您的问题: 1. 没有 2. 可以“欺骗”证书 - 然而,这会很顽皮,大多数(好的)客户端会 catch 并阻止任何进一步的流量发生

关于c# - 证书私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152130/

相关文章:

C# GetManifestResourceStream 返回 null

c# - “使用”关键字不起作用

c# - WCF 服务超时,然后执行操作?

c# - ServiceStack.Text 是否提供 JSON 的 pretty-print ?

c# - 我如何在 C# 中检索 XML 实体值?

c# - 为什么 2 个委托(delegate)实例返回相同的哈希码?

iis - Sitecore 多站点 : How to configure SSL for different domain

email - 使用 luasocket smtp 和 ssl 发送电子邮件

c# - 如何动态设置和获取xaml中的标签?

c++ - openssl 包含 Visual Studio 2012 无法识别的路径