Привет! Я пытаюсь создать прокси-приложение в Windows с помощью c #, я создаю приложение, которое меняет настройки прокси-сервера, чтобы зацикливаться и получать веб-запросы из браузера. Сначала примите входящие сокеты, затем получите поток SSl на следующем шаге и попытайтесь выполнить AuthenticateAsServer.для проверки подлинности нужен X509Certificate, я пытаюсь создать много сертификатов и использовать их, но при вызове функции проверки подлинности выбрасывать «Рукопожатие не удалось из-за неожиданного формата пакета» Исключение.когда удаляете SslStream и используете сетевой поток, получите запрос https, но при попытке отправить ответ в браузер, браузер много раз отправляет запрос и показывает сообщение, содержащее «TLS Security…». пожалуйста, помогите мне.
IPEndPoint ServerEndPoint = new IPEndPoint(ServerHostEntry.AddressList[0], 36900);
////Server2Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
////Server2Socket.Bind(ServerEndPoint);
////Server2Socket.Listen(100);
////Server2Socket.BeginAccept(AccepetSocketCallBack, ServerSocket);
ServerSocket = new TcpListener(ServerEndPoint);
ServerSocket.Start(100);
Running = true;
ServerSocket.BeginAcceptTcpClient(AccepetSocketCallBack, ServerSocket);
private void AccepetSocketCallBack(IAsyncResult ar)
{
if(Running)
{
//Socket E = Server2Socket.EndAccept(ar);
//byte[] Data = new byte[1024 * 100];
//E.Receive(Data, SocketFlags.None);
//string Str = Encoding.ASCII.GetString(Data);
//Server2Socket.BeginAccept(AccepetSocketCallBack, Server2Socket);
ClientClass NewClient = new ClientClass(MainWindow.ServerAddress, 32138, Clients.Count);
NewClient.ClientSocket = ServerSocket.EndAcceptTcpClient(ar);
NewClient.ClientSream = NewClient.ClientSocket.GetStream();
NewClient.InitialSocket();
//Clients.Add(NewClient);
ServerSocket.BeginAcceptTcpClient(AccepetSocketCallBack, ServerSocket);
}
}
public void InitialSocket()
{
try
{
X509Store store = new X509Store(StoreName.My , StoreLocation.LocalMachine);
store.Open(OpenFlags.MaxAllowed);
S = new SslStream(ClientSream, false);
S.AuthenticateAsServer(store.Certificates[0] , false , System.Security.Authentication.SslProtocols.Tls12 , true);
S.BeginRead(RecivedDataContiner, 0, RecivedDataContiner.Length, ReciveCallBack, S);
}
catch(Exception E)
{
ClientSream.BeginRead(RecivedDataContiner, 0, RecivedDataContiner.Length, ReciveCallBack, ClientSream);
}
//ClientSream.BeginRead(RecivedDataContiner,0, RecivedDataContiner.Length , ReciveCallBack, ClientSream);
}
Я пытаюсьиспользуйте многие сертификаты, такие как localhost Create, makecert.exe, сертификат IIS, ssl-сертификат моего веб-сайта, x509Store и openssl и… но в любое время получите исключение, указанное выше.Я тестирую MSDN Пример, но тот же.