• 沒有找到結果。

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 概述

相關文件