[GH-ISSUE #3522] 希望能够添加HTTPS证书替换, HTTPS host修改等功能 #2809

Closed
opened 2026-05-05 13:48:57 -06:00 by gitea-mirror · 3 comments
Owner

Originally created by @asaneneko on GitHub (Jul 7, 2023).
Original GitHub issue: https://github.com/fatedier/frp/issues/3522

Describe the feature request

希望能够添加HTTPS证书替换,
HTTPS host修改等功能
有些HTTPS服务器强校验HOSTNAME或者对不同HOSTname显示不同网页的功能,不好通过frp代理

现阶段可以使用nginx + frps满足该需求,不过配置起来较为麻烦

Describe alternatives you've considered

将HTTPS监听地址配置为444
frpc中HTTPS配置中
custom_domains=填写真实HOST
服务端启动nginx, nginx监听443, 转发到frps444

#修改https的host
server {
    listen 443 ssl;
    server_name server1.域名.com;
    ssl_certificate /path/to/your/ssl/certificate;    # 服务器A的证书
    ssl_certificate_key /path/to/your/ssl/key;        # 服务器A的私钥
    #dayxin.fun有自己的证书
    location / {
        proxy_pass https://127.0.0.1:444;  # 内网frps服务器A的地址
        proxy_set_header Host 192.168.1.100;   # 设置代理请求的Host头字段
        #注意, 需要在frpc中修改custom_domains为这里的host, 因为nginx会先进行替换
        proxy_ssl_verify off;  # 关闭对内网Web服务器A的SSL证书验证
        proxy_ssl_server_name on;  # 开启SNI支持,以便可以通过HTTPS代理请求
    }
}
#仅对证书做替换
server {
    listen 443 ssl;
    server_name server1.域名.com;

    ssl_certificate /path/to/your/ssl/certificate;    # 服务器A的证书
    ssl_certificate_key /path/to/your/ssl/key;        # 服务器A的私钥

    location / {
        proxy_pass https://127.0.0.1:444;  # 内网Web服务器B的地址
        proxy_ssl_verify off;  # 关闭对内网Web服务器B的SSL证书验证
        proxy_ssl_server_name on;  # 开启SNI支持,以便可以通过HTTPS代理请求
    }
}

#默认透传
server {
    listen 443 default_server;
    server_name _;
    location / {
        proxy_pass https://127.0.0.1:444;  # 将请求透传到127.0.0.1:444
    }
}

Affected area

  • Docs
  • Installation
  • Performance and Scalability
  • Security
  • User Experience
  • Test and Release
  • Developer Infrastructure
  • Client Plugin
  • Server Plugin
  • Extensions
  • Others
Originally created by @asaneneko on GitHub (Jul 7, 2023). Original GitHub issue: https://github.com/fatedier/frp/issues/3522 ### Describe the feature request 希望能够添加HTTPS证书替换, HTTPS host修改等功能 有些HTTPS服务器强校验HOSTNAME或者对不同HOSTname显示不同网页的功能,不好通过frp代理 现阶段可以使用nginx + frps满足该需求,不过配置起来较为麻烦 ### Describe alternatives you've considered 将HTTPS监听地址配置为444 frpc中HTTPS配置中 `custom_domains=填写真实HOST` 服务端启动nginx, nginx监听443, 转发到frps444 ``` #修改https的host server { listen 443 ssl; server_name server1.域名.com; ssl_certificate /path/to/your/ssl/certificate; # 服务器A的证书 ssl_certificate_key /path/to/your/ssl/key; # 服务器A的私钥 #dayxin.fun有自己的证书 location / { proxy_pass https://127.0.0.1:444; # 内网frps服务器A的地址 proxy_set_header Host 192.168.1.100; # 设置代理请求的Host头字段 #注意, 需要在frpc中修改custom_domains为这里的host, 因为nginx会先进行替换 proxy_ssl_verify off; # 关闭对内网Web服务器A的SSL证书验证 proxy_ssl_server_name on; # 开启SNI支持,以便可以通过HTTPS代理请求 } } #仅对证书做替换 server { listen 443 ssl; server_name server1.域名.com; ssl_certificate /path/to/your/ssl/certificate; # 服务器A的证书 ssl_certificate_key /path/to/your/ssl/key; # 服务器A的私钥 location / { proxy_pass https://127.0.0.1:444; # 内网Web服务器B的地址 proxy_ssl_verify off; # 关闭对内网Web服务器B的SSL证书验证 proxy_ssl_server_name on; # 开启SNI支持,以便可以通过HTTPS代理请求 } } #默认透传 server { listen 443 default_server; server_name _; location / { proxy_pass https://127.0.0.1:444; # 将请求透传到127.0.0.1:444 } } ``` ### Affected area - [X] Docs - [ ] Installation - [X] Performance and Scalability - [ ] Security - [X] User Experience - [ ] Test and Release - [ ] Developer Infrastructure - [ ] Client Plugin - [X] Server Plugin - [X] Extensions - [ ] Others
gitea-mirror 2026-05-05 13:48:57 -06:00
Author
Owner

@meta-chen commented on GitHub (Jul 10, 2023):

你好,我也同样使用nginx + frps实现反向代理和内网穿透,但是我在链接nextcloud时遇到了SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream的问题,老哥有遇到过吗

<!-- gh-comment-id:1629234066 --> @meta-chen commented on GitHub (Jul 10, 2023): 你好,我也同样使用nginx + frps实现反向代理和内网穿透,但是我在链接nextcloud时遇到了`SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream`的问题,老哥有遇到过吗
Author
Owner

@asaneneko commented on GitHub (Jul 12, 2023):

这是一个关于 SSL 握手失败的错误消息,通常出现在使用 Nginx 作为反向代理服务器并且尝试与上游服务器建立 SSL 连接时。

该错误消息 "SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number" 指示的是,正在尝试的 SSL 连接使用的协议版本与上游服务器所期望的协议版本不一致。

一种可能的情况是,您的 Nginx 配置中使用的 SSL 协议版本与上游服务器接受的版本不匹配。例如,您的 Nginx 配置可能会尝试使用 SSLv3,而上游服务器可能已经不再接受这个较旧的协议,而期望使用更现代、更安全的协议,如 TLSv1.2 或 TLSv1.3。

要解决这个问题,你需要检查并更新你的 Nginx 配置以使用与上游服务器兼容的 SSL 协议版本。您可以在 Nginx 配置中的适当位置添加或修改一行,如:
ssl_protocols TLSv1.2 TLSv1.3;
此外,如果你没有完全控制上游服务器的话,你也可以需要联系该服务器的管理员,了解他们所期望的 SSL 协议版本是什么。

此外,这个错误也可能是由于上游服务器配置错误或者证书问题造成的,比如服务器并未配置正确的 SSL 证书,或者使用了一个自签名证书而客户端并未正确配置以接受这种证书。对于这种情况,你可能需要检查服务器的 SSL 证书和配置,并确保它们都是正确和有效的。

--该回答来自CHATGPT4

<!-- gh-comment-id:1631722620 --> @asaneneko commented on GitHub (Jul 12, 2023): 这是一个关于 SSL 握手失败的错误消息,通常出现在使用 Nginx 作为反向代理服务器并且尝试与上游服务器建立 SSL 连接时。 该错误消息 "SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number" 指示的是,正在尝试的 SSL 连接使用的协议版本与上游服务器所期望的协议版本不一致。 一种可能的情况是,您的 Nginx 配置中使用的 SSL 协议版本与上游服务器接受的版本不匹配。例如,您的 Nginx 配置可能会尝试使用 SSLv3,而上游服务器可能已经不再接受这个较旧的协议,而期望使用更现代、更安全的协议,如 TLSv1.2 或 TLSv1.3。 要解决这个问题,你需要检查并更新你的 Nginx 配置以使用与上游服务器兼容的 SSL 协议版本。您可以在 Nginx 配置中的适当位置添加或修改一行,如: ` ssl_protocols TLSv1.2 TLSv1.3; ` 此外,如果你没有完全控制上游服务器的话,你也可以需要联系该服务器的管理员,了解他们所期望的 SSL 协议版本是什么。 此外,这个错误也可能是由于上游服务器配置错误或者证书问题造成的,比如服务器并未配置正确的 SSL 证书,或者使用了一个自签名证书而客户端并未正确配置以接受这种证书。对于这种情况,你可能需要检查服务器的 SSL 证书和配置,并确保它们都是正确和有效的。 > --该回答来自CHATGPT4
Author
Owner

@github-actions[bot] commented on GitHub (Aug 12, 2023):

Issues go stale after 30d of inactivity. Stale issues rot after an additional 7d of inactivity and eventually close.

<!-- gh-comment-id:1675567920 --> @github-actions[bot] commented on GitHub (Aug 12, 2023): Issues go stale after 30d of inactivity. Stale issues rot after an additional 7d of inactivity and eventually close.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#2809
No description provided.