使用 cloudfare 的 DNS 配置了记录,并且开启了 Proxy 模式,将域名解析到腾讯的 vps ,也在 SSL 里面配置了源服务器证书,也配置到 vps 的 nginx 了
这个时候直接 https 访问 ip 是可以的
但是使用 cloudfare 的域名访问就提示:
SSL handshake failed Error code 525
listen 443 ssl;
ssl_certificate /home/user/cert/domain.pem;
ssl_certificate_key /home/user/cert/domain.key;
1
renfei 2023-07-25 11:56:04 +08:00
VPS 上的防火墙打开 443 端口了吗??
|
5
renfei 2023-07-25 12:02:49 +08:00
如果是严格模式,还会校验证书的有效性,包括签发的 CA 、有效期、域名等信息,一个不对都不行,建议选 完全模式即可。
|
7
renfei 2023-07-25 12:07:40 +08:00
看下官方社区中的方案呢: https://community.cloudflare.com/t/community-tip-fixing-error-525-ssl-handshake-failed/44256
估计是 SNI 或 加密套件的事? |
8
ladypxy 2023-07-25 12:10:05 +08:00
要在 CF 里打开 https 使用 cf 的证书啊
|
9
bearice 2023-07-25 12:11:38 +08:00
换个国外主机试试?国内的会阻断非备案域名的 ssl 连接。
|
11
renfei 2023-07-25 12:20:13 +08:00
我就没开 SSL ,回源直接 http ,要是开 SSL ,光 https 加密我 CPU 直接就爆了
|
12
ladypxy 2023-07-25 12:23:24 +08:00
@yaott2020 误导啥?他这明显不是 CF 和源站之间通讯的问题。是从客户端到 CF 的问题。很大可能是他压根没在 CF 上开启 HTTPS
|
13
renfei 2023-07-25 12:27:45 +08:00
@ladypxy 这个报错是 CF 到源站的问题,如果是客户端到 CF 的问题,就看不到错误代码 Error code 525 了,压根就打不开
|
15
renfei 2023-07-25 12:50:42 +08:00
@jochenshi 执行这个命令看下
curl -svo /dev/null https://www.example.com --connect-to ::192.0.2.0 2>&1 主要修改域名和 IP 地址为你源站的 IP |
16
momooc 2023-07-25 12:59:41 +08:00 via Android
ssl 握手失败,从服务器上找原因吧
|
19
renfei 2023-07-25 13:54:36 +08:00
@jochenshi unable to get local issuer certificate 无法获取本地发行者证书,这个证书的自签名的吗
再加个参数 -k 可以先忽略证书的校验,观测完整的握手过程 curl -k -svo /dev/null https://www.example.com --connect-to ::192.0.2.0 |
20
eijnix 2023-07-25 14:07:43 +08:00
我也一样,换成国外主机立马就好了
|
21
jochenshi OP @renfei 这个证书是 cloudfare 签发的源服务器的证书,然后安装到 vps 上面的,看下面的提示还是走了腾讯指定的 CA ?
* ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/cert.pem * CApath: none * (304) (OUT), TLS handshake, Client hello (1): } [323 bytes data] * (304) (IN), TLS handshake, Server hello (2): { [122 bytes data] * (304) (IN), TLS handshake, Unknown (8): { [25 bytes data] * (304) (IN), TLS handshake, Certificate (11): { [2961 bytes data] * (304) (IN), TLS handshake, CERT verify (15): { [264 bytes data] * (304) (IN), TLS handshake, Finished (20): { [52 bytes data] * (304) (OUT), TLS handshake, Finished (20): } [52 bytes data] * SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: CN=腾讯云对应的域名 * start date: Apr 10 00:00:00 2023 GMT * expire date: Apr 9 23:59:59 2024 GMT * issuer: C=CN; O=TrustAsia Technologies, Inc.; CN=TrustAsia RSA DV TLS CA G2 * SSL certificate verify ok. > GET / HTTP/1.1 > Host: Cloudfare 对应的域名 > User-Agent: curl/7.79.1 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Server: nginx/1.18.0 (Ubuntu) < Date: Tue, 25 Jul 2023 06:07:50 GMT < Content-Type: text/html < Content-Length: 687 < Last-Modified: Mon, 19 Jun 2023 08:27:00 GMT < Connection: keep-alive < Vary: Accept-Encoding < ETag: "64901154-2af" < Accept-Ranges: bytes < { [687 bytes data] |
22
renfei 2023-07-25 14:17:15 +08:00
@jochenshi 只要不是严格模式,CF 是不会校验证书的 CN=腾讯云对应的域名 域名是否一致的,按理来说是没问题的
那我只能怀疑是网络原因了,CF 过墙的时候,被阻断了,毕竟服务器在里面,CF 在外面 |
23
renfei 2023-07-25 14:22:10 +08:00
另外,再提醒一点,nginx 修改完配置,及得重启或者 reload
nginx -s reload 配置才能生效 |
24
jochenshi OP |
25
renfei 2023-07-25 14:37:32 +08:00
@jochenshi 我有国内的机器,但我没有使用 SSL ,我直接 http 回源站,状态监控一周里会发生两三次不通的情况,平时还好,只是慢一些
我已经准备注销备案,完全使用境外服务器了 |
27
BurgerTown 2023-07-25 14:43:09 +08:00
看了一下 大概率是没有备案的大陆主机 没有备案不允许提供 http 服务 在腾讯云的网关会被拦住 如果想用 CF 可以直接用 tunnel 映射出去
|
28
jochenshi OP @BurgerTown 主机有一个备案的域名,想把 cloudfare 的域名也解析过来的,这样是不行的吗?
|
29
JensenQian 2023-07-25 14:55:44 +08:00 via Android
@jochenshi 当然不行,你可以试下 cloudflare tunnel 打洞
|
30
stcode 2023-07-28 11:25:05 +08:00
不能选严格,之前 blogger 博客绑定的域名,我选严格,一直是这个错误,只能选完全
|
32
StevenZ 124 天前
一模一样的错误,尝试各种办法都不行,大概率是因为没有备案的原因。我刚设置好的时候几分钟是可以正常访问的,我认为正常了就没管,第二天再访问的时候就是 525 错误。
|
33
mrlfishman 41 天前
@StevenZ 最后也是只能换主机了?
|