Я провёл тест “в три окна” как с обычным конфигом так и с упрощённым. В упрощённом варианте убрал из Caddyfile probe_resistance и пр. фильтры. Картина получается такая: 1) TLS Handshake проходит идеально, сертификат подхватывается 2) В логах Naive: negotiated padding type: None и сразу Connection closed: OK 3) В логах Caddy (debug): Полная тишина со стороны forward_proxy. После рукопожатия нет ни одной записи о попытке авторизации или проксирования. Запрос просто проваливается в file_server.
Иными словами как это вижу я. Клиент и сервер договариваются о формате данных. Клиент считает, что всё прошло успешно. Он получил от сервера ответ 200 OK и закрыл соединение. Но это был 200 OK от моей странички-заглушки, а не от прокси-туннеля. Т.е. После успешного TLS-рукопожатия Caddy вообще не передает запрос модулю forward_proxy. В логах нет ни слова про http.handlers.forward_proxy или authentication.
Тут бы я подумал в сторону версий плагина и параметров сборки бинарника, но я до этого пробовал разные вариант и версий Go и пр. А вчера вообще поставил Наив в Докере - идеальная среда и получил такую же картину…
Лог запуска клиента (./naive config.json)
[INFO:naive_proxy_bin.cc(217)] Proxying via HTTPS example.com:443 [INFO:naive_proxy_bin.cc(479)] Listening on socks://127.0.0.1:1090 [INFO:naive_connection.cc(277)] Connection 1 to www.google.com:443 [INFO:naive_proxy_delegate.cc(154)] https://example.com:443 negotiated padding type: None [INFO:naive_proxy.cc(185)] Connection 1 closed: OK
Результат запроса (curl)
- Trying 127.0.0.1:1090…
- Opened SOCKS connection from 127.0.0.1 to www.google.com port 443
- ALPN: curl offers h2,http/1.1
- TLSv1.3 (OUT), TLS handshake, Client hello (1):
- TLSv1.3 (OUT), TLS alert, decode error (562):
- TLS connect error: error:0A000126:SSL routines::unexpected eof while reading
- closing connection #0
curl: (35) TLS connect error: error:0A000126:SSL routines::unexpected eof while reading
Лог сервера (sudo journalctl -u caddy -f)
# Сразу после запуска curl на клиенте: Apr 24 23:49:26 server caddy[48209]: {“level”:“debug”,“ts”:1777074566.685068,“logger”:“events”,“msg”:“event”,“name”:“tls_get_certificate”,“id”:“[REDACTED_ID]”,“origin”:“tls”,“data”:{“client_hello”:{“CipherSuites”:[2570,4865,4866,4867,49195,49199,49196,49200,52393,52392,49171,49172,156,157,47,53],“ServerName”:“example.com”,“SupportedCurves”:[19018,25497,29,23,24],“SupportedPoints”:“AA==”,“SignatureSchemes”:[1027,2052,1025,1283,2053,1281,2054,1537],“SupportedProtos”:[“h2”,“http/1.1”],“SupportedVersions”:[60138,772,771],“RemoteAddr”:{“IP”:“USER_IP”,“Port”:54294,“Zone”:“”},“LocalAddr”:{“IP”:“SERVER_IP”,“Port”:443,“Zone”:“”}}}} Apr 24 23:49:26 server caddy[48209]: {“level”:“debug”,“ts”:1777074566.685154,“logger”:“tls.handshake”,“msg”:“choosing certificate”,“identifier”:“example.com”,“num_choices”:1} Apr 24 23:49:26 server caddy[48209]: {“level”:“debug”,“ts”:1777074566.6852086,“logger”:“tls.handshake”,“msg”:“default certificate selection results”,“identifier”:“example.com”,“subjects”:[“example.com”],“managed”:true,“issuer_key”:“acme-v02.api.letsencrypt.org-directory”,“hash”:“[REDACTED_HASH]”} Apr 24 23:49:26 server caddy[48209]: {“level”:“debug”,“ts”:1777074566.6852279,“logger”:“tls.handshake”,“msg”:“matched certificate in cache”,“remote_ip”:“USER_IP”,“remote_port”:“54294”,“subjects”:[“example.com”],“managed”:true,“expiration”:1784844316,“hash”:“[REDACTED_HASH]”}
После этой строки лог обрывается. Никаких упоминаний http.handlers.forward_proxy или попыток dialing нет.
{
debug
order forward_proxy before file_server
}
example.com, www.example.com {
tls user@example.com
forward_proxy {
basic_auth login password
}
root * /var/www/html
file_server
}
С таким упрощённыи для теста конфигом ещё и сайт не открывается, тоесть видимо forward_proxy так мешает работе сервера…