我正在连接到服务器,并且在验证为客户端之后
sslStream = new SslStream(_serverStream, false, SslCertificateValidatorCallback);
sslStream.AuthenticateAsClient(host);
我想使用收到的证书作为服务器。是否可以?为此,我需要私钥,但此证书没有私钥。
所以我的问题是: 1.如果我有带公钥的证书,我可以在该证书上添加私钥吗? 2. 我可以根据收到的公钥和私钥创建新证书吗?
任何想法都会对我很有帮助。
谢谢
最佳答案
我建议对证书加密/非对称加密进行一些研究,因为您的问题表明您对该领域缺乏了解。不想无礼,只是说说。
为了将证书用作服务器,您必须已经拥有证书的私钥。
简而言之:
- 服务器绑定(bind)到端口并拥有带有公钥/私钥对的证书
- 向服务器发出请求
- 客户端使用证书验证服务器的身份
- 如果继续进行有效通信
- 公钥用于加密到服务器的流量
- 服务器使用其私钥解密流量
需要注意的是,证书一般只用于交换一个对称 key (对称加密速度更快)。因此,在证书通过验证后,将进行 key 交换,并使用对称加密 key 恢复通信。
Here is an article to get you started And here
具体回答您的问题: 1. 没有 2. 可以“欺骗”证书 - 然而,这会很顽皮,大多数(好的)客户端会 catch 并阻止任何进一步的流量发生
关于c# - 证书私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152130/