首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Caddy调试curl错误14094438

用Caddy调试curl错误14094438
EN

Stack Overflow用户
提问于 2022-08-16 15:22:07
回答 1查看 1.1K关注 0票数 2

凯蒂认为一切都很好:

代码语言:javascript
运行
复制
{"level":"info","ts":...,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencrypt.org/acme/order/.../..."}
{"level":"info","ts":...,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"https://acme-v02.api.letsencrypt.org/acme/cert/..."}
{"level":"info","ts":...,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"service.internal.example.com"}
{"level":"info","ts":...,"logger":"tls.obtain","msg":"releasing lock","identifier":"service.internal.example.com"}

在集装箱内:

代码语言:javascript
运行
复制
# curl https://localhost/ -H "Host: service.internal.example.com" -v
*   Trying 127.0.0.1:443...
* Connected to localhost (127.0.0.1) port 443 (#0)
* ALPN: offers h2
* ALPN: offers http/1.1
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS alert, internal error (592):
* error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error
* Closing connection 0
curl: (35) error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error

Caddyfile:

代码语言:javascript
运行
复制
{
  acme_dns cloudflare ... # github.com/caddy-dns/cloudflare
}

service.internal.example.com {
  reverse_proxy localhost:1234 # curl localhost:1234 works
}

Wget抛出相同的错误文本,错误号略有不同:

代码语言:javascript
运行
复制
# wget https://localhost/ --header "Host: service.internal.example.com" -v
--...--  https://localhost/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:443... connected.
OpenSSL: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error
Unable to establish SSL connection.

多亏了“小丑主义”,我已经尝试过:

代码语言:javascript
运行
复制
$ curl https://service.internal.example.com --resolve service.internal.example.com:443:127.0.0.1

这个调用(在Caddy容器中)有一个成功的200响应。我已经退到服务器上,结果也是一样的:

代码语言:javascript
运行
复制
$ curl https://service.internal.example.com --resolve service.internal.example.com:443:10.1.2.3.4 # works

因此,这似乎是我的线索:service.internal.example.com的主机标头失败了,但是curl的解析标志有效。

我不知道下一步是什么

EN

回答 1

Stack Overflow用户

发布于 2022-08-16 15:45:13

看上去像是TLS SNI的事。因为您连接到本地主机,curl和wget将发送localhost的TLS,而不是service.internal.example.com。这意味着服务器拒绝它。

作为另一种方法,可以使用curl的resolve 选项将地址锁定到域:

代码语言:javascript
运行
复制
curl https://service.internal.example.com --resolve service.internal.example.com:443:127.0.0.1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73376431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档