我已经编写了一个充当代理服务器的控制台应用程序。现在,我也喜欢实现SSL。不喜欢解密任何流量。就像普通的https代理一样。我不确定该如何继续。
var host = text.Remove(0, connectText.Length + 1);
var hostIndex = host.IndexOf(" ", StringComparison.Ordinal);
var hostEntry = host.Remove(hostIndex).Split(new []{":"}, StringSplitOptions.None);
requestClient.Connect(hostEntry[0], Convert.ToInt32(hostEntry[1]));
requestStream = requestClient.GetStream();
var sslStream = new SslStream(requestStream, false, (x1,x2,x3,x4) => true);
sslStream.AuthenticateAsClient(hostEntry[0]);
const string sslResponse = "HTTP/1.0 200 Connection established\r\n\r\n";
var sslResponseBytes = Encoding.UTF8.GetBytes(sslResponse);
proxyStream.Write(sslResponseBytes, 0, sslResponseBytes.Length);
proxyStream.Flush();
Run Code Online (Sandbox Code Playgroud)
我应该直接将所有内容写入sslStream吗?那浏览器的连接呢proxyClient?我是否还需要包装流,还是可以将所有内容直接写入其中proxyStream?我应该使用AuthenticateAsServer并以某种方式通过AuthenticateAsClient的证书吗?
我看到了,但是没有假证书的AuthenticateAsServer却如何。我可以像在普通流中那样写吗,还是应该考虑些什么?
static void Main(string[] args)
{
var tcpServer = new TcpListener(IPAddress.Parse("127.0.0.1"), 8080);
tcpServer.Start();
while …Run Code Online (Sandbox Code Playgroud)