//cer2.PrivateKey  据说要设置这个,但不知道怎么设置 ,
证书有两个文件,一个是cer ,还有一个私钥文件不知道怎么加进来?有哪位大侠知道吗?
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Security;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Security.Authentication;
using System.Security.Cryptography;namespace Server
{
class Program
{
static void Main(string[] args)
{
X509Certificate cert = getServerCert2();
         TcpListener sslServer = new TcpListener(IPAddress.Any,5005);
sslServer.Start();
Console.WriteLine("Waiting for incoming connection...");
TcpClient client = sslServer.AcceptTcpClient();
SslStream sslStream = new SslStream(client.GetStream());
sslStream.AuthenticateAsServer(cert,true,System.Security.Authentication.SslProtocols.Default, false);
                        /* 当客户端一连上来的时候总是报 找不到关联的私钥 */
StreamReader reader = new StreamReader(sslStream);
StreamWriter writer = new StreamWriter(sslStream); }
        private static X509Certificate2 getServerCert2()
        {
           X509Certificate cert = X509Certificate.CreateFromCertFile("c:\\new.cert.cert");
            X509Certificate2 cer2 = new X509Certificate2(cert);
             //cer2.PrivateKey  据说要设置这个,但不知道怎么设置
            return cer2;
        }

}}

解决方案 »

  1.   

    2.公钥加密和数字签名。
        公钥加密算法也称为非对称算法,使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。公钥可以被任何人使用,该密钥用于加密要发送到私钥持有者的数据。两个密钥对于通信会话都是唯一的。.NET Framework提供以下实现公钥加密算法的类:①DSACryptoServiceProvider;②RSACryptoServiceProvider。根据以上描述,你的只能是“用私钥签名的数据只能用公钥验证”,你想获取那个私钥,需要用pvk文件,而不是cert文件;
    希望对你有所帮助;