Apple FairPlay 许可要求和配置

Media Services logo v3


警告

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 播放。

可以通过使用 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