Apple FairPlay 许可要求和配置

媒体服务徽标


警告

Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南

使用 Azure 媒体服务可通过 Apple FairPlay Streaming (AES-128 CBC) 加密 HLS 内容。 媒体服务还提供用于交付 FairPlay 许可证的服务。 FairPlay Streaming 是 Apple 的一项技术,仅适用于在 iOS 设备、Apple TV 和 macOS 上的 Safari 中通过 HTTP Live Streaming (HLS) 传输的视频。 当 Apple 客户端尝试以 HLS 格式播放受 FairPlay 保护的内容时,将向许可证传送服务发送请求以获取许可证。 如果许可证服务批准了该请求,则会颁发该许可证,该许可证将发送到客户端,并用来解密和播放指定的内容。

媒体服务还提供可用于配置 FairPlay 许可证的 API。 本主题讨论 FairPlay 许可证要求,并演示如何使用媒体服务 API 配置 FairPlay 许可证 。

要求

使用媒体服务通过 Apple FairPlay 加密 HLS 内容并使用媒体服务交付 FairPlay 许可证时,必需完成以下各项 :

  • 注册 Apple 开发计划

  • Apple 要求内容所有者获取部署包。 说明已使用媒体服务实现密钥安全模块 (KSM),以及正在请求最终 FPS 包。 最终 FPS 包中有如何生成证书和获取应用程序密钥 (ASK) 的说明。 可使用 ASK 配置 FairPlay。

  • 必须在媒体服务密钥/许可证交付端上设置以下各项:

    • 应用证书 (AC) :这是一个包含私钥的 .pfx 文件。 创建此文件,并使用密码对其进行加密。 .pfx 文件应采用 Base64 格式。

      以下步骤介绍如何为 FairPlay 生成 .pfx 证书文件:

      1. https://slproweb.com/products/Win32OpenSSL.html 安装 OpenSSL。

        转到 Apple 提供的 FairPlay 证书和其他文件所在的文件夹。

      2. 从命令行运行以下命令。 这会将 .cer 文件转换为 .pem 文件。

        "C:\OpenSSL-Win32\bin\openssl.exe" x509 -inform der -in FairPlay.cer -out FairPlay-out.pem

      3. 从命令行运行以下命令。 这会将 .pem 文件转换为包含私钥的 .pfx 文件。 然后 OpenSSL 会要求提供 .pfx 文件的密码。

        "C:\OpenSSL-Win32\bin\openssl.exe" pkcs12 -export -out FairPlay-out.pfx -inkey privatekey.pem -in FairPlay-out.pem -passin file:privatekey-pem-pass.txt

    • 应用证书密码:用于创建 .pfx 文件的密码。

    • ASK:使用 Apple 开发人员门户生成证书时会收到此密钥。 每个开发团队都会收到唯一的 ASK。 请保存一份 ASK 副本,并将其存储在安全位置。 需要将 ASK 配置为媒体服务的 FairPlayAsk。

  • 以下事项必须通过 FPS 客户端来设置:

    • 应用证书 (AC) :这是一个包含公钥的 .cer/.der 文件,操作系统使用它来加密某些负载。 媒体服务需要了解它,因为播放器需要它。 密钥传送服务使用相应的私钥对其进行解密。
  • 要播放 FairPlay 加密的流,需要先获取实际 ASK,然后生成实际证书。 该过程将创建所有三个部分:

    • .der 文件
    • .pfx 文件
    • .pfx 的密码

注意

在打包或密钥交付期间,Azure 媒体服务不会检查证书的到期日期。 证书到期后,它将继续工作。

FairPlay 和播放器应用

使用 Apple FairPlay 对内容进行加密时,各视频和音频示例都使用 AES-128 CBC 模式进行加密FairPlay 流式处理 (FPS) 集成到设备操作系统,iOS 和 Apple TV 本身支持这项功能。 OS X 上的 Safari 使用加密媒体扩展 (EME) 接口支持启用 FPS。

Azure Media Player 还支持 FairPlay 播放。 有关详细信息,请参阅 Azure Media Player 文档

可以通过使用 iOS SDK 开发自己的播放器应用。 若要能够播放 FairPlay 内容,必须实现许可证交换协议。 此协议不由 Apple 指定。 而是取决于每个应用发送密钥传送请求的方式。 媒体服务 FairPlay 密钥传送服务需要 SPC 为采用以下形式的 www-form-url 编码后消息:

spc=<Base64 encoded SPC>

在 Azure 密钥保管库中存储 FairPlay 私钥 (.pfx)

从 Apple 收到的私钥 (.pfx) 应被视为安全证书,可将其存储在 Azure Key Vault 中。

  • 管理员应该先将 .pfx 证书文件转换为 base64 编码的文本文件
  • 转换后,可将此文件作为安全文本文件存储在 Azure DevOps Services 中。
  • 然后,可以在 Azure Key Vault 中手动将字符串存储为“机密对象”,或者存储为解决方案的部署/生成脚本的一部分。 在 Gridwich 项目示例代码中可以看到将 FairPlay 私钥证书存储在 Azure Key Vault 中的示例
  • (可选)在密钥保管库中将 .pfx 文件的密码存储为机密。

示例 CLI 脚本

若要将 base64 编码的私钥文件复制到 Azure 密钥保管库,请执行以下操作:

set -eu
echo key vault : $SHARED_KV_NAME
echo "Copying FairPlay certificate to key vault as secret"
az keyvault secret set --vault-name $SHARED_KV_NAME -n ams-fairPlay-certificate-b64 -f $(FairPlayCertificate.secureFilePath) --output none

获得帮助和支持

如果有任何疑问,可以联系媒体服务,或者使用以下方法之一关注我们的更新: