ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Oryx 一键 HTTPS:SRS 接入 Let‘s Encrypt 零成本证书

Oryx 一键 HTTPS:SRS 接入 Let‘s Encrypt 零成本证书 Oryx 一键 HTTPSSRS 接入 Lets Encrypt 零成本证书【免费下载链接】srsSRS is a simple, high-performance, AI-driven real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181, with codec support for H.264, H.265, AV1, VP9, AAC, Opus, and G.711.项目地址: https://gitcode.com/GitHub_Trending/sr/srsMeta description本教程用 Oryx 一键集成 Lets Encrypt为 SRS 流媒体服务申请免费 TLS 证书3 步完成 DNS 配置、证书签发与自动续期满足 WebRTC 推流安全上下文与嵌入播放需求。WebRTC 推流、把播放器嵌进 HTTPS 网站都有一个绕不过去的硬条件流媒体服务必须走加密的 HTTPS。用 Oryx 一键接入 Lets Encrypt这个条件可以零成本达成而且证书自己会续。读完本文你会拥有一个以https://example.com/mgmt访问的 SRS Droplet 控制台并且能用一条命令确认证书不会过期。先搞清楚三件事这一节给你三块背景知识懂完它们后面动手就不会卡壳。对流媒体来说HTTPS 到底卡在哪里TLSTransport Layer Security传输层安全协议是 HTTPS 的底座负责让数据在传输过程中被加密。对流媒体服务而言它的意义不只是地址栏有把锁而是浏览器会强制你满足两条规则WebRTC 推流是硬性要求浏览器只允许在安全上下文HTTPS 或 localhost里访问摄像头和麦克风。想用浏览器通过 WHIP 直接推流不开 HTTPS 就推不了嵌入 HTTPS 网站的前提把 HLS/HTTP-FLV 播放器嵌进任何 HTTPS 网站比如 WordPress 站点流地址也必须走 HTTPS否则浏览器会以混合内容mixed content为由直接拦截请求。Oryx 在链路里站在哪个位置Oryx原名 SRS Stack是一个单节点一体化应用底层由 SRS 引擎负责 RTMP、SRT、WebRTC、HLS 等媒体链路上层则集成了 FFmpeg、Go 后端、React 控制台、Redis 与 NGINX。和本教程直接相关的是最后两个——NGINX 负责对外的 HTTP/HTTPS 访问与反代LEGOLets Encrypt 官方的 Go 语言实现组件则负责证书申请与续期的全部流程。你只需要操作控制台与 Lets Encrypt 服务器的通信、挑战验证这些脏活都由 Oryx 替你完成。本教程能做什么不能做什么能做为一个完整注册的域名申请 Lets Encrypt 免费证书有效期约 3 个月在控制台一键完成首次签发此后由 Oryx 的定时任务每天自动续期。不能做通配符域名等高级需求不在本文范围内——证书申请逻辑以单个域名为主要场景支持分号分隔的多个域名但每个域名都要有 A 记录Oryx 本身是单节点设计多节点部署也不涉及。 动手之前这一节交代两样前置条件、全文的占位符约定以及端口映射表。前置条件一个已安装并完成初始化的 Oryx按《如何一键搭建视频流服务》即可完成安装一个完整注册的域名任意域名注册商处购买均可。占位符约定文中用example.com代表你的域名用203.0.113.10代表你服务器的公网 IP两者都是示例值请替换为你的真实值。默认 Docker 部署下的端口映射宿主机端口容器内端口用途80/TCP2022/TCPHTTP 访问、Lets Encrypt 验证入口443/TCP2443/TCPHTTPS 控制台、OpenAPI、信令、安全媒体分发1935/TCP1935/TCPRTMP 推流/播放8000/UDP8000/UDPWebRTC 媒体传输10080/UDP10080/UDPSRT 推流/播放80 端口必须公网可达Lets Encrypt 通过向你的服务器发起 HTTP 挑战来验证域名归属云安全组不放行 80 和 443后面全是白忙。把域名指到你的机器上这一节的产出一条能解析的 A 记录和一个能用域名访问的控制台。登录域名注册商给example.com添加一条 A 记录类型为A名称为example.com值为203.0.113.10——也就是让域名指向你的服务器公网 IP。然后验证解析是否生效ping example.com预期输出PING example.com (203.0.113.10): 56 data bytes 64 bytes from 203.0.113.10: icmp_seq0 ttl64 time11.8 ms 64 bytes from 203.0.113.10: icmp_seq1 ttl64 time16.5 ms 64 bytes from 203.0.113.10: icmp_seq2 ttl64 time12.4 ms解析到公网 IP 后在浏览器打开http://example.com/mgmt能看到 Oryx 控制台页面即可。两个常见踩坑点① DNS 生效不是即时的ping 不通时等几分钟再试或换个网络环境验证② 这个阶段用 http 而不是 https 访问是正常的证书还没申请先别关页面。⚡️ 让 Oryx 替你搞定证书这一节的操作只有一个在控制台输入域名点 Submit。后台发生了什么值得你知道。登录 Oryx 控制台进入System系统 HTTPS Lets Encrypt在输入框填入example.com点击Submit等待申请完成。后台实际发生的是Oryx 内置的 LEGO 组件与 Lets Encrypt 服务器通信创建一个 challenge挑战——Lets Encrypt 向你的服务器发起 HTTP 请求验证你确实控制着这个域名。全程自动无需任何手动操作。申请成功后用https://example.com/mgmt重新加载站点浏览器地址栏出现安全锁标识就是肉眼可见的确认。多域名分号写法前提是你为每个域名都添加了 A 记录。申请时可以用分号分隔多个域名例如输入example.com;www.example.com那么https://example.com与https://www.example.com会同时可用。证书会自己续但你要知道它怎么续这一节的产出明白续期机制并且能用一条命令判断机制是否健康。Lets Encrypt 的证书有效期约 3 个月续期是必然发生的。Oryx 内置了一个定时任务每天检查证书是否即将到期到点就自动续期并在必要时重新加载 NGINX 让新证书生效。你不需要人工干预。查看续期日志docker logs platform | grep renew预期输出Thread #crontab: auto renew the Lets Encrypt ssl Thread #crontab: renew ssl updatedfalse, message is Processing /etc/letsencrypt/renewal/lh.ossrs.io.conf Certificate not yet due for renewal The following certificates are not due for renewal yet: No renewals were attempted.判断一切正常的标准日志里有auto renew任务执行记录且没有错误信息看到Certificate not yet due for renewal说明当前证书还没到续期窗口这正是你想要的状态。往下再挖一层配置与代码层面发生了什么这一节拆成两块Oryx 底下在干什么以及纯 SRS 部署时等效配置该怎么写。Oryx 侧NGINX、LEGO 与 /data 持久化Oryx 的 HTTPS 能力由三个环节拼成LEGO向 Lets Encrypt 申请与续期证书是自动 HTTPS 的核心NGINX提供 HTTP/HTTPS 访问与反向代理证书生效后由它完成安全传输/data持久化目录SSL 证书文件、自动生成的 SRS 与 NGINX 配置、Redis 数据都存放在这里所以容器重启后证书不丢失。端口层面宿主机443/TCP映射到容器2443/TCP承载 HTTPS 控制台、OpenAPI、信令与安全的 HTTP 媒体分发80/TCP映射到2022/TCP。启用 Lets Encrypt 证书后https://example.com/mgmt就是由 NGINX 拿着这张证书对外提供加密访问。还有一个细节Oryx 通过/data/config/.env环境文件管理核心参数例如MGMT_PASSWORD管理员密码、CANDIDATEWebRTC 候选地址、AUTO_SELF_SIGNED_CERTIFICATE自签名证书开关。申请到真实证书后Oryx 会用 LEGO 签发的证书替换默认自签名证书让 NGINX 与 SRS 的 HTTPS 通道统一使用真实证书。更完整的组件说明可参考仓库内的 skills/srs-support/references/oryx-overview.md。纯 SRShttps.srs.conf 关键参数怎么写如果你不用 Oryx 而是独立部署 SRSHTTPS 同样有完整配置支撑。以仓库自带的 trunk/conf/https.srs.conf 为例http_server与http_api都支持独立的 HTTPS 监听http_server { enabled on; listen 8080; dir ./objs/nginx/html; https { enabled on; listen 8088; key ./conf/server.key; cert ./conf/server.crt; } } http_api { enabled on; listen 1985; https { enabled on; listen 1990; key ./conf/server.key; cert ./conf/server.crt; } }参数含义https { enabled on; }开启 HTTPS 监听与对应的 HTTP 监听并存listen 8088/listen 1990分别是http_serverHTTP 为 8080与http_apiHTTP 为 1985的加密通道端口key/cert私钥与证书文件路径示例用的是trunk/conf/下随附的自签名证书server.key、server.crt生产环境请换成真实证书同文件的rtc_server段还有candidate $CANDIDATEWebRTC 场景下SDPSession Description Protocol描述媒体会话的格式中通告的候选地址必须能被客户端访问否则媒体通道建不起来——HTTPS 解决的是信令与浏览器权限UDP 媒体链路仍依赖 candidate 配置正确。trunk/conf/https.docker.conf 与 trunk/conf/https.rtc.conf 则分别在 Docker 与 WebRTC 场景下给出了 HTTPS 配置参考。提醒不要把 SRS 独立部署的配置文件直接替换进 Oryx 环境。Oryx 会在/data下自动生成所需的 SRS 与 NGINX 配置独立配置可以作为阅读参考但不要直接覆盖。 别踩这些坑下面四条是实际部署中最容易翻车的地方建议动手前先看一遍。单域名为主Oryx 的证书申请逻辑以单个域名为主要场景支持分号分隔多域名通配符域名等高级需求请查官方文档DNS 必须可公网解析Lets Encrypt 的 HTTP/ACMEAutomatic Certificate Management Environment证书自动化管理协议挑战要求域名能解析到你的公网 IPA 记录没配好点多少次 Submit 都没用/data必须持久化证书与配置都放在/data容器被替换时若没有持久化挂载证书随之丢失只能重新申请安全组放行 80/44380 用于 Lets Encrypt 验证与 HTTP 跳转443 用于 HTTPS 访问云安全组漏开任何一个申请必然失败。你现在拥有了什么盘点一下你手里的东西一个以https://example.com/mgmt访问的控制台浏览器锁标识就是凭证WebRTC 推流与嵌入式播放都跨过了安全上下文这道门槛一套可以在日志里验证的自动续期机制3 个月有效期从此不用你操心。HTTPS 只是入口接下来你可以看看 Oryx 的其他能力把选定的流录制为 MP4、转推到多个平台或者接入 RTSP 摄像头流。【免费下载链接】srsSRS is a simple, high-performance, AI-driven real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181, with codec support for H.264, H.265, AV1, VP9, AAC, Opus, and G.711.项目地址: https://gitcode.com/GitHub_Trending/sr/srs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表