Как настроить https прокси, написанный на всей системе Golang?

У меня есть прокси приложение, написанное на Голанге. На данный момент прокси не требует аутентификации. Я могу развернуть его с или без сертификатов TLS.

Сначала я развернул его с сертификатами TLS. Я попытался соединиться с аддоном foxyproxy в Firefox, и он работал нормально. Затем я попробовал это с завитком, как

curl --proxy https://myproxy.com:port -v icanhazip.com

и он возвращает правильный IP, и так как результат многословен, я вижу, что рукопожатие прошло успешно. Ciphersuite является ECDHE-RSA-AES256-GCM-SHA384, Все отлично работает с foxyproxy тоже.

Теперь, когда я пытаюсь использовать эту прокси-систему в Ubuntu, я получаю ошибки. Я установил прокси в HTTPS Proxy поле в сети поле сетевых настроек в Ubuntu. Теперь, когда я пытаюсь зайти на такой сайт, как https://www.google.com/ я получаю сообщение об ошибке. ERR_RESPONSE_HEADERS_TRUNCATED из хрома. Кажется, что рукопожатия терпят неудачу. Когда я проверяю логи сервера, я вижу два типа ошибок:

http: TLS handshake error from myip:56126: tls: oversized record received with length 20037

или

http: TLS handshake error from myip:55262: EOF

Я немного покопался и обнаружил, что эти ошибки случаются, когда клиент не говорит по tls. Я не знаю, в чем проблема.

Я развернул свой сервер как:

server := &http.Server{
    Addr:    addr,
    Handler: handler,
}
err := server.ListenAndServeTLS("path/to/cert", "path/to/key")
log.Fatal(err)

Я не знаю, помогает ли это, но я получаю свои сертификаты от LetsEncrypt с Certbot.

Теперь, когда я развертываю свой код без сертификатов tls, все работает нормально, но я знаю, что это будет иметь недостатки в безопасности и должно использоваться только для отладки.

Любая помощь приветствуется. Я задал этот вопрос на stackoverflow, но они пометили мой вопрос как не по теме. Я надеюсь, что это правильное место.

0 ответов

Другие вопросы по тегам