540 字
1 分钟
frp配置
frp TLS 全场景配置万能文档。包含了证书生成、不同场景(IP/域名)以及不同验证模式(单向/双向)的完整配置。
第一步:准备证书(统一使用 OpenSSL)
为了支持 IP 地址 校验,必须使用配置文件生成带 SAN (Subject Alternative Name) 的证书。
1. 创建配置文件 openssl.cnf
请根据实际情况修改 IP.1 或 DNS.1。
[req]distinguished_name = req_distinguished_namereq_extensions = v3_reqprompt = no
[req_distinguished_name]CN = example.com # 随意填写,主要看下面的 SAN
[v3_req]keyUsage = keyEncipherment, dataEnciphermentextendedKeyUsage = serverAuth, clientAuthsubjectAltName = @alt_names
[alt_names]IP.1 = 1.2.3.4 # 替换为你的服务器公网 IPDNS.1 = yourdomain.com # 替换为你的域名(如果没有则删掉此行)2. 一键生成所有证书
# 1. 生成 CA 根证书openssl genrsa -out ca.key 2048openssl req -x509 -new -nodes -key ca.key -subj "/CN=MyfrpCA" -days 3650 -out ca.crt
# 2. 生成服务端证书 (关联 openssl.cnf)openssl genrsa -out server.key 2048openssl req -new -key server.key -config openssl.cnf -out server.csropenssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650 -extensions v3_req -extfile openssl.cnf
# 3. 生成客户端证书 (双向验证才需要)openssl genrsa -out client.key 2048openssl req -new -key client.key -subj "/CN=frp-client" -out client.csropenssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650第二部分:场景化配置
场景 A:使用 IP 地址 + 双向验证 (最高安全级别)
适合追求极致安全,且没有域名的用户。
服务端 frps.toml
bindPort = 7000auth.token = "your_token"
[transport.tls]force = truecertFile = "/etc/frp/ssl/server.crt"keyFile = "/etc/frp/ssl/server.key"trustedCaFile = "/etc/frp/ssl/ca.crt" # 验证客户端证书客户端 frpc.toml
serverAddr = "1.2.3.4"serverPort = 7000auth.token = "your_token"
[transport.tls]enable = truecertFile = "/etc/frp/ssl/client.crt" # 客户端证书keyFile = "/etc/frp/ssl/client.key" # 客户端私钥trustedCaFile = "/etc/frp/ssl/ca.crt" # 验证服务端证书serverName = "1.2.3.4" # 必须与证书中的 IP.1 一致场景 B:使用域名 + 单向验证 (标准 HTTPS 模式)
适合有域名,且希望配置简单、方便多客户端接入的用户。
服务端 frps.toml
bindPort = 7000auth.token = "your_token"
[transport.tls]force = truecertFile = "/etc/frp/ssl/server.crt"keyFile = "/etc/frp/ssl/server.key"# 单向验证:不要写 trustedCaFile客户端 frpc.toml
serverAddr = "yourdomain.com"serverPort = 7000auth.token = "your_token"
[transport.tls]enable = truetrustedCaFile = "/etc/frp/ssl/ca.crt" # 验证服务端域名证书serverName = "yourdomain.com" # 必须与证书中的域名一致第三部分:1Panel 部署手册
如果您使用 1Panel 的 Docker 版本部署,请注意路径映射。
- 宿主机存放路径:建议放在
/opt/1panel/apps/frps/ssl/。 - Docker 映射配置:
- 宿主机目录:
/opt/1panel/apps/frps/ssl - 容器目录:
/etc/frp/ssl
- 宿主机目录:
- 配置文件路径写绝对路径:
- 在
frps.toml中,路径必须写/etc/frp/ssl/server.crt。
- 在
第四部分:配置要点总结(避坑指南)
| 配置项 | 说明 | 常见错误 |
|---|---|---|
| serverName | 握手时的域名/IP 校验 | 千万不能空着。必须加引号且值要和证书一致。 |
| trustedCaFile | 验证对方身份的“红头文件” | 服务端配了它就是双向验证,客户端必须传证书,否则报 EOF。 |
| force = true | 强制 TLS 模式 | 开启后,如果客户端没开 TLS (enable=true),直接无法连接。 |
| Boolean 值 | true / false | 严禁加引号。加了引号会报 cannot unmarshal string。 |
| 文件权限 | Linux 系统权限 | .key 文件建议设为 600,.crt 设为 644。 |
验证 TLS 是否生效?
- 看日志:如果
frps开启了force = true且frpc成功连上并显示start proxy success,说明 TLS 已经成功握手。 - 模拟失败:尝试把
frpc.toml里的serverName改错。如果报错x509: certificate is valid for xxx, not yyy,说明 TLS 校验机制工作完美。
部分信息可能已经过时









