基于 TCP 的 C# 服务的 SSL 认证

SSL certification on C# service over TCP

我有 2 个服务器端(虚拟)程序,它们创建一个 TCP 服务器 (TCPListener),然后尝试使用 X509 证书 (BeginAuthenticateAsServer) 对服务器进行身份验证。 客户端程序已准备就绪。

这两个服务器端程序的区别在于,一个是简单的控制台应用程序,而另一个是 Windows 服务。

出于某种原因,客户端可以连接到控制台应用程序但不能连接到服务。两个程序的设计相同。

我使用以下行来描述我将使用的证书:

serverCertificate = new X509Certificate( "C:\Users\Tom\workspace\ServerSSL.cer", "12345678" );

我认为服务程序的特权有些可疑,但我在过去几天无法弄清楚。当然,我有 The server mode SSL must use a certificate with the associated private key. 错误。当我尝试搜索答案作为帮助时,我在 IIS / web 服务主题中得到了结果,但我使用的是简单的 Windows 7 Pro.

我可以请你帮忙吗?

文件 ServerSSL.cer 很可能只包含证书,而不包含私钥。这就是错误消息告诉您的内容。

尝试查找 pfxp12 文件。或者,如果您有包含私钥的单独文件(即 .key),您需要从它们(.key 和 .cer)创建一个 pfx (p12) 文件。您可以使用 openssl or xca 来做到这一点。