更新时间:2025-05-22 16:54:58
HLS标准化加密(HLS AES加密)通过使用高级加密标准(AES-128)算法对视频分片进行加密,保障视频内容在传输过程中的安全性。这种对称密钥加密方式使用相同密钥进行服务器端加密和播放器端解密。
加密后,HLS播放列表(m3u8文件)会包含EXT-X-KEY标签,为播放器提供内容解密所需信息:
#EXT-X-KEY:METHOD=AES-128,URI="https://keypathURI/hls_aes.key",IV=0x00000000000000000000000000000000
播放时,播放器会首先从播放列表指定的URI获取解密密钥,之后才能解码视频分片。
启用HLS AES加密前需确保:
为确保API请求中AES加密密钥的安全传输,必须使用RSA加密进行保护。此过程需要生成密钥对并将私钥注册到我们平台上。
执行以下命令创建RSA公私钥:
# 生成私钥(2048位)
openssl genrsa -out private.key 2048
# 从私钥提取公钥
openssl rsa -in private.key -pubout -out pub.key
请妥善保管密钥文件。公钥用于对你的 AES 密钥加密,私钥由后端用于对密钥解密。
构造加密请求时,您需要按以下结构构造包含特殊加密设置的fops参数(文件操作参数):
<op>/<Format>
/hlsKey/<hlsKey>
/hlsKeyUrl/<hlsKeyUrl>
|saveas/<Urlsafe_Base64_Encode(bucket:filekey)>
hlsKey是必须经过RSA加密后才能加入API请求的AES加密密钥:
以AES密钥值01234566543210abcdef888888abcdef为例:
# 生成随机16字节密钥(按需)
openssl rand -hex 16
# 使用RSA-OAEP加密您的密钥并对其进行编码以供API传输
echo -n "01234566543210abcdef888888abcdef" | openssl rsautl -encrypt -pubin -inkey pub.key -oaep | openssl base64 -A | tr "+/" "-_"
输出字符串即为加密后的hlsKey参数值。
hlsKeyUrl参数用于指定播放器获取密钥的地址,可选两种方式:
使用方式2创建密钥文件:
# 从十六进制密钥生成二进制密钥文件
echo -ne "\x01\x23\x45\x66\x54\x32\x10\xab\xcd\xef\x88\x88\x88\xab\xcd\xef" > key.hex
上传至存储空间后,使用可访问URL作为hlsKeyUrl参数值,例如:
https://bucketname.s3-cn-north-1.wcsapi.com/key.hex
参数准备完成后,现在可以通过API请求执行加密视频内容操作。
此示例将加密vod-wcs-test001存储空间下的名为test_hls.m3u8视频文件:
curl -v -X POST \
-d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test_hls.m3u8)&fops=Urlsafe_Base64_Encode(avthumb/m3u8/hlsKey/encrypted hlsKey/hlsKeyUrl/https://bucketname.s3-cn-north-1.wcsapi.com/key.hex|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:hls_aes_.m3u8))&force=1&separate=1" \
-H "Authorization: AccessKey EncodeSign" \
--url "http://mgrDomain/fops"
转码成功完成后,加密视频将存储在指定存储空间。生成的HLS清单文件(m3u8)会包含EXT-X-KEY标签,提示内容已加密和为播放器提供密钥地址。