V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jochenshi
V2EX  ›  Cloudflare

Cloudfare SSL 配置求助

  •  
  •   jochenshi · 277 天前 · 2075 次点击
    这是一个创建于 277 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 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;
    
    31 条回复    2023-07-31 10:32:43 +08:00
    renfei
        1
    renfei  
       277 天前
    VPS 上的防火墙打开 443 端口了吗??
    jochenshi
        2
    jochenshi  
    OP
       277 天前
    @renfei 开了的,腾讯云自己的域名解析能解析过去,直接 IP 访问 443 也可以的
    renfei
        3
    renfei  
       277 天前
    @jochenshi cloudflare 那边是 完全模式?完全(严格)模式?
    jochenshi
        4
    jochenshi  
    OP
       277 天前
    @renfei 完全模式
    renfei
        5
    renfei  
       277 天前
    如果是严格模式,还会校验证书的有效性,包括签发的 CA 、有效期、域名等信息,一个不对都不行,建议选 完全模式即可。
    jochenshi
        6
    jochenshi  
    OP
       277 天前
    @renfei 就是完全模式,选的第三个
    renfei
        7
    renfei  
       277 天前
    看下官方社区中的方案呢: https://community.cloudflare.com/t/community-tip-fixing-error-525-ssl-handshake-failed/44256
    估计是 SNI 或 加密套件的事?
    ladypxy
        8
    ladypxy  
       277 天前
    要在 CF 里打开 https 使用 cf 的证书啊
    bearice
        9
    bearice  
       277 天前
    换个国外主机试试?国内的会阻断非备案域名的 ssl 连接。
    yaott2020
        10
    yaott2020  
       277 天前 via Android
    @ladypxy 不要误导,开完全模式,cf 的自签证书和第三方认证的签名证书都可以
    renfei
        11
    renfei  
       277 天前
    我就没开 SSL ,回源直接 http ,要是开 SSL ,光 https 加密我 CPU 直接就爆了
    ladypxy
        12
    ladypxy  
       277 天前
    @yaott2020 误导啥?他这明显不是 CF 和源站之间通讯的问题。是从客户端到 CF 的问题。很大可能是他压根没在 CF 上开启 HTTPS
    renfei
        13
    renfei  
       277 天前
    @ladypxy 这个报错是 CF 到源站的问题,如果是客户端到 CF 的问题,就看不到错误代码 Error code 525 了,压根就打不开
    jochenshi
        14
    jochenshi  
    OP
       277 天前
    是 cloudfare 跟源站之间的
    [Imgur]( )
    @ladypxy
    @renfei
    renfei
        15
    renfei  
       277 天前
    @jochenshi 执行这个命令看下
    curl -svo /dev/null https://www.example.com --connect-to ::192.0.2.0 2>&1
    主要修改域名和 IP 地址为你源站的 IP
    momooc
        16
    momooc  
       277 天前 via Android
    ssl 握手失败,从服务器上找原因吧
    momooc
        17
    momooc  
       277 天前 via Android
    @momooc 重启 Nginx 了吗?
    jochenshi
        18
    jochenshi  
    OP
       277 天前
    renfei
        19
    renfei  
       277 天前
    @jochenshi unable to get local issuer certificate 无法获取本地发行者证书,这个证书的自签名的吗
    再加个参数 -k 可以先忽略证书的校验,观测完整的握手过程
    curl -k -svo /dev/null https://www.example.com --connect-to ::192.0.2.0
    eijnix
        20
    eijnix  
       277 天前
    我也一样,换成国外主机立马就好了
    jochenshi
        21
    jochenshi  
    OP
       277 天前
    @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]
    renfei
        22
    renfei  
       277 天前
    @jochenshi 只要不是严格模式,CF 是不会校验证书的 CN=腾讯云对应的域名 域名是否一致的,按理来说是没问题的
    那我只能怀疑是网络原因了,CF 过墙的时候,被阻断了,毕竟服务器在里面,CF 在外面
    renfei
        23
    renfei  
       277 天前
    另外,再提醒一点,nginx 修改完配置,及得重启或者 reload
    nginx -s reload
    配置才能生效
    jochenshi
        24
    jochenshi  
    OP
       277 天前
    @renfei @eijnix @bearice
    我刚刚用同样的配置换了一个国外的机器,可以访问,看来是被腾讯拦截了

    @renfei 你自己也是代理到国内的机器的吗?你的可以用吗
    renfei
        25
    renfei  
       277 天前
    @jochenshi 我有国内的机器,但我没有使用 SSL ,我直接 http 回源站,状态监控一周里会发生两三次不通的情况,平时还好,只是慢一些
    我已经准备注销备案,完全使用境外服务器了
    jochenshi
        26
    jochenshi  
    OP
       277 天前
    @renfei 还有一个问题哈,使用这个不需要改国内源服务器的 DNS 吧
    BurgerTown
        27
    BurgerTown  
       277 天前
    看了一下 大概率是没有备案的大陆主机 没有备案不允许提供 http 服务 在腾讯云的网关会被拦住 如果想用 CF 可以直接用 tunnel 映射出去
    jochenshi
        28
    jochenshi  
    OP
       277 天前
    @BurgerTown 主机有一个备案的域名,想把 cloudfare 的域名也解析过来的,这样是不行的吗?
    JensenQian
        29
    JensenQian  
       277 天前 via Android
    @jochenshi 当然不行,你可以试下 cloudflare tunnel 打洞
    stcode
        30
    stcode  
       274 天前
    不能选严格,之前 blogger 博客绑定的域名,我选严格,一直是这个错误,只能选完全
    jochenshi
        31
    jochenshi  
    OP
       271 天前
    @stcode 选的就是完全模式,不是完全(严格)模式,换了一台国外的主机可以的,感觉是腾讯云干了啥
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   878 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:13 · PVG 04:13 · LAX 13:13 · JFK 16:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.