Snawoot нужна помощь!
Привет!!! Как вы используете свой локальный прокси? Помогите пожалуйста, хоть чем-нить. Например: Я делаю прокси сервер, принимаю соединение от клиента "CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\nProxy-Connection: Keep-Alive\r\n\r\n", редактирую добавляю Proxy-Authorization: Basic, дальше соединяюсь к https прокси через openssl, посылаю клиенту "HTTP/1.1 200 OK\r\n\r\n", и дальше обрабатываю сокеты как обычное tcp?
-
Вот так:
if (FD_ISSET(socket_client, &readfds)) { int recvd = recv(socket_client, buf, sizeof(buf), 0); if (recvd <= 0) send(proxy_socket, buf, recvd, 0); } if (FD_ISSET(proxy_socket, &readfds)) { int recvd = recv(proxy_socket, buf, sizeof(buf), 0); if (recvd <= 0) break; send(socket_client, buf, recvd, 0); }
Или принимаю соединение SSL_accept, расшифровываю данные от клиента, и создаю новое ssl соединение, и отправляю данные к прокси и потом к клиенту? 2. Вот так:
if (FD_ISSET(socket_client, &readfds))
{
int recvd = SSL_read(ssl_client, buf, sizeof(buf));
if (recvd <= 0)
break;
SSL_write(ssl_conn, buf, recvd);
}
if (FD_ISSET(proxy_socket, &readfds))
{
int recvd = SSL_read(ssl_conn, buf, sizeof(buf));
if (recvd <= 0)
break;
SSL_write(ssl_client, buf, recvd);
}
В первом случае не получается, во втором получается, но у клиента сертификат в инфо, показывает моего сервера. А Когда я использую ваш прокси то показывает сертификат куда я подключаюсь например example.com, Второй вариант это mitm получается? Или как я должен делать? может в ответ клиенту я должен отправить сертификат который мне прислал прокси? Или как? Не подскажите как вы это сделали? Хотя бы на словах объясните пожалуйста. Я просто в Go плохо разбираюсь. Буду рад любой помощи.
Здравствуйте! Правильно по первому варианту делать. Если не получается - разбираться, что именно.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.