11.4 配置防盗链
11.4.2 Key 防盗链
使用Referer防盗链可以对访问者的身份进行过滤,但Referer内容是可伪造的,无法彻 底保障点播资源的安全。所以视频点播还提供了Key防盗链功能,用户可以自行配置 Key值,并生成对应的播放URL,且该链接有一定的时效性,从而有效地保障了用户上 传到点播服务上的资源不被非法盗用。您可以参考如下步骤完成Key防盗链的配置,也 可以通过视频指导来操作。
实现原理
Referer防盗链的实现原理比较简单,在点播控制台配置了白名单或黑名单后,点播服 务会将这份名单分发到CDN中。当CDN接收到资源请求时,会根据这个名单来识别请 求是否合法,若合法,则访问请求的资源,否则拒绝并返回403。
Key防盗链是视频点播的加速节点与点播源站联合实现的,比Referer防盗链更为安全 可靠的一种防盗播方案。Key防盗链的实现过程如图11-18所示。
图11-18 Key 防盗链实现原理
流程说明如下所示:
1. 租户在点播控制台开启Key防盗链功能,并配置误差允许时间、算法等。
2. 点播服务将配置的密钥值等下发到CDN节点中。
3. 租户通过点播服务获取到点播媒资的鉴权URL。
4. 观众通过租户提供的鉴权播放URL向CDN请求视频播放。
5. CDN根据播放URL中携带的鉴权信息校验请求的合法性,仅校验通过的请求会被 允许。
注意事项
● 该功能为可选项,默认不启用。
● 启用该功能后,原始视频加速URL将无法播放,需要按规则生成合法的防盗链 URL。
● 若防盗链URL过期,或者签名不能通过,将无法播放视频,并返回“403 Forbidden”信息。
● 加密算法ABC暂不支持HLS和DASH播放场景。
用户指南 11 域名管理
● 若需要关闭Key防盗链,请提交工单申请。
配置步骤
步骤1 登录视频点播控制台。
步骤2 在左侧导航栏选择“域名管理”,进入域名管理界面。
步骤3 单击域名右侧“配置 ”,选择“防盗链”页签。
步骤4 单击“Key防盗链”板块,打开“防盗链开关”。
步骤5 配置Key防盗链参数,具体如图11-19所示。
图11-19 配置 Key 防盗链
表11-3 参数说明
参数 说明
密钥值 即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。
参数 说明
说明算法ABC暂不支持HLS和DASH播放场景,建议使用算法D。
步骤6 单击“确定”,完成参数配置。
auth_key的计算公式:
auth_key = MD5(/asset/{assetId}/{file_name}-{timestamp}-{rand}-{uid}-{private_key})
表11-4 鉴权字段描述
字段 描述
timestamp 鉴权URL生成时间,为Unix时间戳,1970年1月1日以来的秒数。
示例:1564731935(即2019.08.02 15:45)
rand 随机数,建议使用UUID方式生成,不能包含中划线”-“。
示例:f03cbe7c4a3849bc8d8769e3110e4533 uid 暂未使用,直接设置成0即可。
private_key 在控制台设置的防盗链Key值,具体请参见配置步骤。
鉴权URL示例
auth_key = md5(/asset/6b2d740f10b8697d8ea6672868ecdb6f/
test.mp4-1547123166-477b3bbc253f467b8def6711128c7bec-0-myPrivateKey) = 584883719a3f722bf1a32a3b0a4d25dd
md5sum = md5({private_key}{date_yyyyMMddHHmm}/asset/{asset_id}/{file_name})
表11-5 鉴权字段描述
字段 描述
date_yyyyMMddH
Hmm 鉴权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
md5hash = md5({private_key}/asset/{asset_id}/{file_name}{time_hex})
表11-6 鉴权字段描述
字段 描述
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}
加密串和EncodedIV的计算公式:
● 加密原始串 = url_encoding({path}+"$"+{Timestamp})
用户指南 11 域名管理
● 加密串 = aes_cbc_128_pkcs5padding(原始加密串,key,IV)
● EncodedIV = hex(IV) 表11-7 鉴权字段描述
Timestamp 鉴权URL生成时间,UTC时间,格式为
yyyyMMddHHmmss,用于检查鉴权参数是否过期。
示例:20190805101025
key 在控制台设置的防盗链Key值,具体请参见配置步骤。
IV 随机生成的bytes数组,长度为16。
hex():将bytes数组转换成十六进制的字符串。
生成IV生成示例代码如下所示:
byte[] iv = new byte[16];
SecureRandom secureRand = new SecureRandom();
secureRand.nextBytes(iv);
原始加密串 = url_encoding("/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/") + "$" +
"20190805102430"
加密串 = 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
12 音视频托管
12.1 概述