计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive

Key防盗链

更新时间:2024-12-02 GMT+08:00

使用Referer防盗链可以对访问者的身份进行过滤,但Referer内容是可伪造的,无法彻底保障点播资源的安全。所以视频点播还提供了Key防盗链功能,用户可以自行配置Key值,并生成对应的播放URL,且该链接有一定的时效性,从而有效地保障了用户上传到点播服务上的资源不被非法盗用。

实现原理

Referer防盗链的实现原理比较简单,在点播控制台配置了白名单或黑名单后,点播服务会将这份名单分发到CDN中。当CDN接收到资源请求时,会根据这个名单来识别请求是否合法,若合法,则访问请求的资源,否则拒绝并返回403。

Key防盗链是视频点播的加速节点与点播源站联合实现的,比Referer防盗链更为安全可靠的一种防盗播方案。Key防盗链的实现过程如图1所示。

图1 Key防盗链实现原理

流程说明如下所示:

  1. 租户在点播控制台开启Key防盗链功能,并配置误差允许时间、算法等。
  2. 点播服务将配置的密钥值等下发到CDN节点中。
  3. 租户通过点播服务获取到点播媒资的鉴权URL。
  4. 观众通过租户提供的鉴权播放URL向CDN请求视频播放。
  5. CDN根据播放URL中携带的鉴权信息校验请求的合法性,仅校验通过的请求会被允许。

注意事项

  • 该功能为可选项,默认不启用。
  • 启用该功能后,原始视频加速URL将无法播放,需要按规则生成合法的防盗链URL。
  • 若防盗链URL过期,或者签名不能通过,将无法播放视频,并返回“403 Forbidden”信息。
  • 加密算法ABC暂不支持HLS和DASH播放场景。
  • Key防盗链功能启用后,若需要关闭,请提交工单申请。
  • 开启Key防盗链场景下,暂不支持多音轨和多字幕的播放请求。所以开启防盗链配置时,需要确认业务场景是否涉及多音轨和多字幕。

配置步骤

  1. 登录视频点播控制台
  2. 在左侧导航栏中,选择“域名管理”,进入域名管理界面。
  3. 单击域名右侧“配置”,选择“防盗链配置”页签。
  4. 单击“Key防盗链”板块,弹出“Key防盗链”对话框。
  5. 请您按照实际需求配置Key防盗链参数,参数说明如表1所示。

    图2 配置Key防盗链
    表1 参数说明

    参数

    说明

    密钥值

    即Key值,单击“生成”,可自动生成符合格式的密钥值。

    误差允许时间

    表示当前防盗链有效时间,默认为120分钟。

    示例:若鉴权URL生成时间为1573806090(2019/11/15 16:21:30),配置的“误差允许时间”为120分钟,则鉴权URL的失效时间为2019/11/15 18:21:30。

    旧key的失效时间

    采用新Key时,旧Key值的失效时间,从新Key生效时开始计算,默认60分钟后失效。

    示例:若新Key生效时间为2019/11/15 16:21:30,配置的“旧Key的失效时间”为60分钟,则旧鉴权URL的真正失效时间为2019/11/15 17:21:30。

    算法

    Key值加密算法,支持如下四种算法:

    ABC算法:采用MD5信息摘要算法,具体实现方法请参见加密算法A加密算法B加密算法C

    D算法:采用对称加密算法,具体实现方法请参见加密算法D

    E算法:采用Share256算法,具体实现方式请参见加密算法E(同CDN服务加密算法C2)。请注意:目前界面可以正常展示E算法,但功能暂未开放使用,请用户知晓。

    说明:
    • 算法ABC暂不支持HLS和DASH播放场景,建议使用算法D或算法E。
    • 算法E目前仅支持HLS和MP4类型文件开启试看功能。MP4文件的试看功能,需要其封装格式moov在mdat前面时,才能生效。开启试看功能后,可以从点播控制台获取播放链接,默认试看时长为300s。

    鉴权范围

    指定哪些文件参与鉴权。目前仅支持选择:所有文件、指定文件后缀鉴权、指定文件后缀不鉴权。

    鉴权继承配置

    为M3U8/MPD索引文件下的TS/MP4文件添加鉴权参数,解决因鉴权不通过导致的TS/MP4文件无法播放的问题。

    说明:
    • 如果嵌套多层M3U8/MPD文件,仅解析第一层M3U8/MPD文件,不展开嵌套M3U8/MPD文件的TS/MP4流。
    • 支持标准M3U8格式(按行解析:解析不成功时返回原值,支持以标签#EXT-X-MAP开头的URI,支持以非#开头的URL/URI)。
    • 支持标准MPD格式(按行解析:解析不成功时返回原值,识别标签<BaseURL></BaseURL>之间的URI,不支持标签SegmentTemplate)。

    试看开关

    当前仅支持HLS和MP4类型文件试看功能。

  6. 单击“确定”,完成参数配置。
  7. 若您选择使用算法D,则参数配置完成后还需要提交工单申请审核,提交的信息需包含配置的域名,及表1中的信息。

    审核通过后Key防盗链功能才会生效。若后续修改了此Key防盗链配置,需要重新提交工单审核。

  8. 验证Key防盗链生效是否生效。

    获取对应的鉴权播放地址,并使用该地址进行播放,若播放成功,则表示Key防盗链配置生效。

生成鉴权URL

控制台获取

  1. 登录视频点播控制台
  2. 在左侧导航栏中,选择“媒资管理 > 音视频管理”,进入音视频管理界面。
  3. 在对应的音视频行单击管理,选择“播放地址”,进入播放地址展示页面。

    其中地址列为音视频的原始地址,单击即可获取鉴权URL。

    图3 播放地址

加密算法A

鉴权URL格式

原始URL?auth_key={timestamp}-{rand}-{uid}-{auth_key}
auth_key的计算公式:
auth_key = MD5(/asset/{assetId}/{file_name}-{timestamp}-{rand}-{uid}-{private_key})
表2 鉴权字段描述

字段

描述

timestamp

鉴权URL生成时间,为Unix时间戳,1970年1月1日以来的秒数。

示例:1564731935(即2019.08.02 15:45)

rand

随机数,建议使用UUID方式生成,不能包含中划线”-“。

示例:f03cbe7c4a3849bc8d8769e3110e4533

uid

暂未使用,直接设置成0即可。

private_key

在控制台设置的防盗链Key值,具体请参见配置步骤

鉴权URL示例
原始URL:http://1.cdn.myhuaweicloud.com/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4
private_key:myPrivateKey
timestamp:1547123166
rand:477b3bbc253f467b8def6711128c7bec
uid:0
则根据计算公式,得到auth_key
auth_key = md5(/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4-1547123166-477b3bbc253f467b8def6711128c7bec-0-myPrivateKey) = 584883719a3f722bf1a32a3b0a4d25dd

最终得到算法A的鉴权URL

http://1.cdn.myhuaweicloud.com/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4?auth_key=1547123166-477b3bbc253f467b8def6711128c7bec-0-584883719a3f722bf1a32a3b0a4d25dd

加密算法B

鉴权URL格式
https://{cdn_domain}/{date_YYYYmmddHHMM}/{md5sum}/asset/{asset_id}/{file_name}
md5sum的计算公式:
md5sum = md5({private_key}{date_yyyyMMddHHmm}/asset/{asset_id}/{file_name})
表3 鉴权字段描述

字段

描述

date_yyyyMMddHHmm

鉴权URL生成时间,格式为:yyyyMMddHHmm。

示例:201908051445

file_name

指原始播放URL中从媒资ID后开始到最后的路径。

示例:play_video/test.mp4

private_key

在控制台设置的防盗链Key值,具体请参见配置步骤

鉴权URL示例
原始URL:http://1.cdn.myhuaweicloud.com/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4
private_key:myPrivateKey
date_yyyyMMddHHmm:201901102026
file_name:test.mp4

则根据计算公式,得到md5sum

md5sum = md5(myPrivateKey201901102026/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4) = 713ef643de8df076da6ec3c0545968cb

最终得到算法B的鉴权URL

http://1.cdn.myhuaweicloud.com/201901102026/713ef643de8df076da6ec3c0545968cb/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4

加密算法C

鉴权URL格式
https://{cdn_domain}/{md5hash}/{time_hex}/asset/{asset_id}/{file_name}
md5hash的计算公式
md5hash = md5({private_key}/asset/{asset_id}/{file_name}{time_hex})
表4 鉴权字段描述

字段

描述

file_name

指原始播放URL中从媒资ID后开始到最后的路径。

示例:play_video/test.mp4

time_hex

鉴权URL生成时间,为Unix时间戳的十六进制结果。

示例:hex(1564987530)=5D47D08A

private_key

在控制台设置的防盗链Key值,具体请参见配置步骤

鉴权URL示例
原始URL:http://1.cdn.myhuaweicloud.com/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4
private_key:myPrivateKey
time_hex:hex(timestamp) = hex(1547123166) = 5C3739DE
file_name:test.mp4
则根据计算公式,得到md5sum
md5hash=md5(myPrivateKey/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp45C3739DE) = afa20c956043fe6d130b16f2704ac870

最终得到算法C的鉴权URL

http://1.cdn.myhuaweicloud.com/afa20c956043fe6d130b16f2704ac870/5C3739DE/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.mp4 

加密算法D

鉴权URL格式

原始URL?auth_info={加密串}.{EncodedIV}&plive={plive_starttime}
加密串EncodedIV的计算公式:
  • 加密原始串 = url_encoding({path}+"$"+{Timestamp})+"$"+{plive_starttime}
  • 加密串 = aes_cbc_128_pkcs5padding(原始加密串,key,IV)
  • EncodedIV = hex(IV)
表5 鉴权字段描述

字段

描述

path

指从域名开始,到最后一层目录,包括域名后的“/”,也包含最后一层目录后的“/”,不包括文件名。

示例:/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/

Timestamp

鉴权URL生成时间,UTC时间,格式为yyyyMMddHHmmss,用于检查鉴权参数是否过期。

示例:20190805101025

key

在控制台设置的防盗链Key值,具体请参见配置步骤

plive(可选)

伪直播开始时间,取值为UTC时间。

需要伪直播时,才配置此参数,否则不需要此参数参与鉴权URL的计算。伪直播详情请参考伪直播

IV

随机生成的bytes数组,长度为16。

hex():将bytes数组转换成十六进制的字符串。

生成IV生成示例代码如下所示:
byte[] iv = new byte[16];
SecureRandom secureRand = new SecureRandom();
secureRand.nextBytes(iv);
鉴权URL示例
原始URL:https://179.cdn-vod.huaweicloud.com/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/index.m3u8
path:/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/
key:8Ks1qn14XRO28qOa
Timestamp:20190805102430
plive:1704074400
则根据计算公式,得到加密串EncodedIV
原始加密串 = url_encoding("/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/") + "$" + "20190805102430"+ "$" + "1704074400"
加密串 = aes_cbc_128_pkcs5padding(原始加密串,key,IV) = 34M%2F6KtYgxuAozdBLIVTe0dUVAZdvXsYQoYAnDmuhRHh1hshYg%2B2Tl0AmSwySDh%2BmkER44qYKpSP%2BgfsLM%2FIZe4F6K4n1Nx6ouGwyKfqdDA%3D
EncodedIV = hex(IV) = 79436d453636364e335941713330534e
最终得到算法D的鉴权URL
https://179.cdn-vod.huaweicloud.com/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/index.m3u8?auth_info=34M%2F6KtYgxuAozdBLIVTe0dUVAZdvXsYQoYAnDmuhRHh1hshYg%2B2Tl0AmSwySDh%2BmkER44qYKpSP%2BgfsLM%2FIZe4F6K4n1Nx6ouGwyKfqdDA%3D.79436d453636364e335941713330534e&plive=1704074400

加密算法E

注意:
  • 目前界面可以正常展示E算法,但功能暂未开放使用,请用户知晓。
  • 不能同时开启试看和伪直播功能。下述URL仅供参考,exper和plive不能同时存在。

鉴权URL格式

原始URL?auth_key={authKey}&timestamp={timestamp}&exper={exper}&plive={plive_starttime}

authKey的计算公式如下所示:

  • 开启试看功能:auth_key = sha256({PrivateKey }{fileName}{timestamp}{exper}
  • 开启伪直播功能:auth_key = sha256({PrivateKey }{fileName}{timestamp}{plive_starttime})
    表6 鉴权字段描述

    字段

    描述

    timestamp

    鉴权URL生成时间,为Unix时间戳,即1970年1月1日以来的秒数。单位:秒。

    示例:1564731935。即时间为:2019.08.02 15:45。

    fileName

    实际回源访问的URL,鉴权时filename需以“/”开头,且不能包含鉴权URL中“?”后面的参数。

    如:/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.hls

    PrivateKey

    用户设定的鉴权密钥,用于生成加密URL。

    密钥的格式为大小写字母和数字,长度为16到32位字符。

    exper(可选)

    视频试看时长,取值为数字,单位:秒。仅支持MP4和HLS格式。

    需要试看时,才配置此参数,否则不需要此参数参与鉴权URL的计算。

    plive(可选)

    伪直播开始时间,取值为UTC时间。仅支持HLS格式。

    需要伪直播时,才配置此参数,否则不需要此参数参与鉴权URL的计算。不能同时开启试看和伪直播功能。伪直播详情请参考伪直播

鉴权URL示例
原始URL:http://1.cdn.myhuaweicloud.com/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.hls
private_key:32d6b2d740f10b86
timestamp:1547123166
fileName:/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.hls
exper:300
plive:1704074400
则根据计算公式,得到auth_key,如下所示:
  • 开启试看功能
    auth_key = sha256(32d6b2d740f10b86/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.hls1547123166300) = 3a935cf1d8299fe63ec8d4e0afb5ef3304883a702a4e760f3c5ae838a4b69768
  • 开启伪直播功能
    auth_key = sha256(32d6b2d740f10b86/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.hls15471231661704074400) = 3a935cf1d8299fe63ec8d4e0afb5ef3304883a702a4e760f3c5ae838a4b69768
最终得到算法E的鉴权URL,如下所示:
  • 支持试看功能
    http://1.cdn.myhuaweicloud.com/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.hls?auth_key=3a935cf1d8299fe63ec8d4e0afb5ef3304883a702a4e760f3c5ae838a4b69768&timestamp=1547123166&exper=300
  • 支持伪直播功能
    http://1.cdn.myhuaweicloud.com/asset/6b2d740f10b8697d8ea6672868ecdb6f/test.hls?auth_key=3a935cf1d8299fe63ec8d4e0afb5ef3304883a702a4e760f3c5ae838a4b69768&timestamp=1547123166&plive=1704074400

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容