Как настроить 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, но они пометили мой вопрос как не по теме. Я надеюсь, что это правильное место.