配置 frpc 使用的 SSL 证书
在以下两个典型场景中,您可能会需要 为 frpc 配置 SSL 证书,以避免证书错误提示:
此页将介绍如何为 frpc 配置 SSL 证书来避免 自动 HTTPS 和 访问认证 功能的证书错误提示。
如果您没有使用这些功能,则 此页的内容不适用于您。
获取 SSL 证书
提示
您需要拥有一个属于自己的域名才能申请、部署 SSL 证书。如果您还没有域名,可以考虑使用 子域绑定 功能
有了域名后,选择一个 SSL 服务商,按照他们的流程进行申请即可。下面是一些常见的 SSL 服务商:
- Let's Encrypt (免费)
- Zero SSL (免费)
- Nya SSL (单域名 ¥19.9/年, 泛域名 ¥199/年,部分用户可在管理面板领取优惠券获取更低的价格)
- 腾讯云
- 阿里云
- Comodo
- DigiCert
- GlobalSign
SSL 服务商 不必 是当前域名的注册商,按需选择适合您的平台即可。
如果下载证书时有多种格式可选,请选择 Nginx 格式,简单的说就是有 .key
和 .crt
文件那种。
证书域名注意事项
如您打算通过 sub.example.com
访问隧道,那么就应为 sub.example.com
或 *.example.com
申请证书
sub.example.com
:这是 单域名 证书,仅对绑定的sub.example.com
有效*.example.com
:这是 泛域名 证书,对所有二级域名均有效,如a.example.com
、b.example.com
等
配置 frpc 的 SSL 证书
更新自动 HTTPS 设置
登录管理面板修改隧道配置,在 自动 HTTPS 处 输入您的域名,该域名应与您申请的 SSL 证书域名一致。
然后,启动隧道以进行测试,让 frpc 生成自签名的证书文件。
替换自动 HTTPS 证书文件
自签名证书在 frpc 的 工作目录 中,您需要将其 替换为 您申领的 SSL 证书。
对于 v2.0.5.0 及以上版本,工作目录在 %ProgramData%\SakuraFrpService\FrpcWorkingDirectory
。
如果您没有对系统进行过 “优化”,这个目录通常是 C:\ProgramData\SakuraFrpService\FrpcWorkingDirectory
。
对于旧版本启动器,工作目录就是启动器的 frpc.exe 所在路径。
工作目录在 ${XDG_CONFIG_HOME}/natfrp-service/FrpcWorkingDirectory
,
如果您的发行版比较特殊,也可能是 ${HOME}/.config/natfrp-service/FrpcWorkingDirectory
。
对于 服务端安装,或者一键脚本的 常规模式安装。
工作目录在 /home/natfrp/natfrp-service/FrpcWorkingDirectory
。
使用 Docker 运行的启动器,工作目录默认为 /run/FrpcWorkingDirectory
(而不是 /run/frpc
)。
您可以以 Docker frpc 的形式挂载证书文件到该目录中,此处不再赘述,只需将 Docker 篇的 /run/frpc
替换为 /run/FrpcWorkingDirectory
。
但是为了方便同时使用多张证书,您也可以在启动容器时指定一个外置存储,如 启动器 Docker 使用指南 所示。
然后您只需直接证书文件拷贝到被挂载的本地目录下的 FrpcWorkingDirectory
中即可(如果您参考使用指南配置,即为 /etc/natfrp/FrpcWorkingDirectory
)。
工作目录为 /var/packages/natfrp/var
。
如果您直接复制了 frpc 文档中的 Unit 示例,您的工作目录为 /usr/local/etc/natfrp
。
您可也可以自己配置 WorkingDirectory
项来指定一个工作目录,例如:
[Service]
WorkingDirectory=/etc/frpc
如果需要确认您目前的配置,请执行 grep "WorkingDirectory" /etc/systemd/system/[email protected]
。
如果上面的指令不显示任何内容,请编辑 /etc/systemd/system/[email protected]
加入 WorkingDirectory=一个目录
。
Docker 工作目录默认为 /run/frpc
,但是该目录中的文件会在容器销毁时丢失。
请使用 -v
或 --mount
挂载证书文件到该目录中,并且最好挂载为只读。
下面的示例将 /root/my.{crt,key}
两个文件挂载到容器的 /run/frpc/example.com.{crt,key}
中:
# 用 -v
docker run (其他参数) \
-v /root/my.crt:/run/frpc/example.com.crt:ro \
-v /root/my.key:/run/frpc/example.com.key:ro
# 用 -mount
docker run (其他参数) \
--mount type=bind,src=/root/my.crt,dst=/run/frpc/example.com.crt,ro \
--mount type=bind,src=/root/my.key,dst=/run/frpc/example.com.key,ro
如果刚才已启动隧道测试,那么此时,在工作目录中就可以看到自签名证书了:
example.com.crt
:自签名证书文件example.com.key
:自签名证书的私钥文件
此时应先 确保隧道已关闭,随后替换这两个 自签名证书:
- 将您自己申领的 SSL 证书下载到本地,找到其中的
.crt
和.key
文件 - 将
.crt
文件重命名为您的域名.crt
,如example.com.crt
- 将
.key
文件重命名为您的域名.key
,如example.com.key
- 将重命名后的 SSL 证书放到 frpc 工作目录,并 直接替换 里面的文件即可
* Docker 直接挂载进去重启就可以了,不需要进行替换
最后,重新启动隧道并尝试访问。如果您的配置步骤、申请的证书没有问题,那么将不再出现证书错误提示。
注意
如果您发现启动隧道后,frpc 工作目录中您替换的 SSL 证书重新被 frpc 替换为自签名证书,那么说明 frpc 未能解析您的 SSL 证书,请检查证书完整性、各文件是否正确。
访问认证配置 SSL 证书
- frpc v0.42.0-sakura-3.1 及以上版本访问认证会遵循 自动 HTTPS 配置项的规则加载证书,参考 配置 frpc 的自动 HTTPS 功能 和上面的 替换自动 HTTPS 证书文件 配置即可
- 对于 v0.42.0-sakura-3 及更低版本,您可以通过替换 frpc 工作目录下的
authpanel.<crt|key>
让访问认证加载对应的证书
设置域名解析
您为您的 启用访问认证的隧道 设置了绑定指定域名的 SSL 证书。 因此在访问时,若要避免证书错误提示,需要通过您的域名访问隧道。
主机记录 | 记录类型 | 记录值 | 其他配置项 |
---|---|---|---|
自定义 | CNAME | 节点域名 | 无特殊需求请保留默认 |
随后,访问 https://您的域名:远程端口
,即可进入访问认证页面。