ADOBE® MEDIA SERVER 5.0.3
デベロッパーズガイド
![]() ![]() ![]() |
翻訳:株式会社サムライズ |
---|
注意
Adobe Media Server® バージョン 5についての本ドキュメントは第三者によって翻訳されたものであり、Adobe Systems Incorporated(アドビ システムズ社)は本翻訳物の正確性や完全性を査閲していません。
HLSのコンテンツ保護の設定
Adobe Media Server 5を使用して、Apple HTTP Live Streamingをサポートする機器に保護されたコンテンツを配信します。Adobe Media Serverのインストーラーは、必要な証明書とキーをrootinstall/credsディレクトリに生成します。新しいキーを生成するには、スクランブルツールを使用します。Scramble toolを参照。
コンテンツを保護するために3つのモードを使用することができます。
• Vanilla
• PHLS
• Adobe Access 4.0
特定の暗号化スキームを使用するには、HLSProtectionSchemeディレクティブを使用します。
Vanilla
Vanillaモードは単純なAES暗号化に使用されます。
PHLS
PHLSモードは非DRMのソリューションです。ライセンスサーバーやキーサーバーをセットアップする必要はありません。キーは常にローカルモードで配送されます。
Adobe Access
Adobe Accessモードは完全なDRMソリューションを提供します。このモードは全てのAdobe Access 3.0の機能と、HLSのリモート鍵配送をサポートしています。ローカル鍵配送モードはAdobe Access 2.0以上のライセンスサーバーもサポートしています。リモートの鍵配送モードはAdobe Access 4.0に対応したサーバーのみをサポートしています。
Adobe Access SDKは、パソコン等のコンシューマデバイスでの再生のため、ビデオ及びオーディオコンテンツを保護し、安全に配信することを可能にするデジタル著作権管理(DRM)プラットフォームです。Adobe Accessは、コンテンツオーナーがコンテンツを保護し、配信に対して一貫して支配権を維持することを可能にする柔軟なプラットフォームです。コンテンツオーナーは、多種多様の最高品質のコンテンツを消費者が入手できるようにしつつ、各デジタルメディアファイルのライセンスを作成することにより、自らの権利を保護管理することができます。
Adobe Accessは、ビデオ・オン・デマンド、レンタル、及びESTを含む、幅広いビジネスモデルをサポートしています。Adobe Media Serverを通じたストリーミングによりAdobe Accessで保護されたコンテンツを配信して、AdobeのHTTP Dynamic Streaming技術を使用することでHTTP経由でプログレッシブダウンロードを提供したり、消費者の好きなときにローカルで再生できるようにコンテンツライブラリへのダウンロードを許可したりすることができます。
HTTP Live StreamingでのDRMサポートを有効化するには、Adobe Access iOSライブラリを使用します。Adobe Access 2.0及びAdobe Access 3.0向けに生成されたポリシーファイルも、ローカル鍵配送モードで使用することができます。
異なるレベル(サーバー、アプリケーション、ストリーム、及びイベント)のコンテンツに異なるコンテンツ暗号化キーを使用することをサポートしています。そのキーはコンテンツの場所と共通キーの場所に従って生成されます。
キーローテーション
定期的に暗号化キーを変更し、どのくらいの頻度でコンテンツ暗号化キーを変更するかを指定することができます。
帯域外のDRMメタデータ
AMSのHLSモジュールは、BERでエンコードされたDRMメタデータを帯域外で配送することをサポートしています。その要求URLは、最後に.m3u8の代わりに.drmmetaがつく形式だということを除いて再生リストのものと同じです、m3u8に埋め込まれるメタデータはbase64でエンコードされていますが、.drmmetaファイルに入れられて帯域外で配送されるメタデータはバイナリデータです。
プレイヤー制限
Adobe Media Server は、保護スキームがPHLSならば、ホワイトリストに基づいたプレイヤー制限をサポートしています。これはHTTPのSWF検証と同様のものです。
ライセンスチェーン
Adobe Media Serverは、ライセンスチェーンを使用して生成されたポリシーからDRMメタデータへのリーフライセンスの埋め込みをサポートしています。そのポリシーのルートライセンスが使用することができるように設定された、ライセンスサーバー保護資格証明書と証明書のパスワードが、埋め込まれたリーフライセンスに含まれるCEKを暗号化するために必要です。
使用開始する
以下の手順に従い、PHLSを基本的な設定内容で設定します。
1 <root-install>/Apache 2.2/conf/ディレクトリに移動します。httpd.confファイルを編集し、<Location hls-live>の下に以下のタグを追加します。
<Location /hls-live>
HLSHttpStreamingEnabled true
HttpStreamingLiveEventPath "../applications"
HttpStreamingContentPath "../applications"
HLSMediaFileDuration 8000
HLSSlidingWindowLength 6
HLSFmsDirPath ".."
HttpStreamingUnavailableResponseCode 503
HLSEncryptionScope server
HLSProtectionScheme PHLS
</Location>
注:この設定はPHLSをサーバーレベルで有効化します。
2 “livestream?adbe-live-event=liveevent”という名前のライブストリームをlivepkgrにパブリッシュします。
3 http://<server-ip>:8134/hls-live/livepkgr/_definst_/liveevent/livetsream.m3u8というURIを使用して、ストリーミングを再生します。
詳細な設定
以下のセクションでは詳細な設定を提供します。
サーバーレベル
サーバーレベルでHLSの設定を行い、配置された全てのアプリケーションにコンテンツ保護を適用することができます。
以下の表が、Apacheのhttpd.confファイルにおけるhlshttp_module用のディレクティブです。
ディレクティブ |
デフォルト |
説明 |
HLSEncryptionScope |
Off |
暗号化のスコープを定義します。以下のものが可能な値です。
server —Apacheの暗号化設定が全てのコンテンツに適用されます。サーバーは、Event.xmlや Application.xml(ライブ)やjit.conf (オンデマンド)のコンテンツごとの暗号化設定を無視します。
content —Apacheの暗号化設定は無視されます。サーバーはEvent.xmlや Application.xml(ライブ)やjit.conf (オンデマンド)の暗号化設定を使用します。
Off —サーバー全体で暗号化がオフになります。 |
HLSEncryptCipherKeyFile |
無し |
コンテンツを暗号化するために使用されるデフォルトの暗号キーのパスです。 |
HLSEncryptKeyURI |
無し |
暗号化キーを取得するためにクライアントが使用するURIです。 |
パブリッシュと再生
1 rootinstall/Apache2.2/conf/httpd.confファイルを開き、hlshttp_moduleを見つけます。
<IfModule hlshttp_module>
...
<Location /hls-live>
...
2 以下を非コメント化します。
# Uncomment the following directives to enable encryption
# for this location:
HLSEncryptionScope server
HLSEncryptionCipherKeyFile "../creds/liveeventkey.bin"
HLSEncryptKeyURI "https://<ServerName>/hls-key/liveeventkey.bin"
<ServerName>には、省略されていないAdobe Media Serverのドメイン名を代入します。
3 「暗号化キーをクライアントに配送する」の手順に従い、SSL有りか無しのどちらかでサーバーがキーを配送するように設定します。これらの手順は、HLSEncryptKeyURI ディレクティブの/hls-keyパスを設定します。
4 Flash Media Live Encoderを開き、以下の設定でストリームをパブリッシュします。
• Format—H.264
• Keyframe Frequency—4 seconds
• AMS URL—rtmp://<server-name>/livepkgr
• Stream—encryption?adbe-live-event=encryption
5 iOSデバイスで以下のURLを要求します。
http://<servername>/hls-live/livepkgr/_definst_/encryption/encryption.m3u8
6 ストリームが暗号化されていることを確認するには、Apple Media Stream Validator Toolをストリームに対して実行してください。Technical Note TN2224を参照。
以下の表がApacheのhttpd.confファイルにおけるhlshttp_module用のディレクティブです。
パラメーター |
この方式で必須 |
デフォルト |
説明 |
|
HLSProtectionScheme |
Adobe Access 4.0, PHLS |
Vanilla |
コンテンツに使用される保護スキームを決定します。保護スキームはVanilla、AdobeAccessV4、もしくはPHLSが可能です。HLSProtectionSchemeは暗号化が有効化されている場合に効果を発揮します。暗号化のレベルを決定するには、HLSEncryptionScopeパラメーターを使用します。 |
|
HLSEmbedMetadata |
Adobe Access 4.0, PHLS |
VODではtrue ライブではfalse |
(オプショナルです)再生リストへのメタデータ埋め込みを有効化します。可能な値は"true"もしくは"false"です。falseはHLSMetaPackagingEnabledがtrueに設定されている場合のみ機能することに注意してください。 |
|
HLSMetaPackagingEnabled |
Adobe Access 4.0, PHLS |
true |
(オプショナルです)このLocationでメタデータのジャストインタイムのパッケージ化を有効化します。可能な値は"true"もしくは"false"です。この設定はVanillaの保護スキームでは無効です。 |
|
HLSMetaMaxAge |
Adobe Access 4.0, PHLS |
60*60秒(1時間) |
(オプショナルです)M3U8レスポンスのCache-Controlヘッダーで設定されるmax-ageを指定します。
秒を単位として指定します。-1はCache-Controlヘッダーが設定されないことを意味します。指定されなければデフォルト値だと推定されます。
この設定は、HLSMetaPackagingEnabledの値がtrueに設定されている場合のみ使用されます。 |
|
|
||||
PHLSCommonKeyFile |
(オプショナルです)PHLS |
PHLSの場合 ../creds/commonKey.bin |
../creds/commonKey.binにある共通キーファイルの名前を設定します。 |
|
HLSDrmContentID/ PHLSContentID |
(オプショナルです)PHLS |
eventID |
ライセンスをマッピングするためのコンテンツIDです。 |
|
HLSDrmLicenseServerURL |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるライセンスサーバーのURLです。 |
|
HLSDrmTransportCertFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるトランスポート証明書ファイルです。 |
|
HLSDrmLicenseServerCertFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるライセンスサーバー証明書が含まれるファイルです。 |
|
HLSDrmPackagerCredentialFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるパッケージャー保護資格証明書が含まれるファイルです。 |
|
HLSDrmPackagerCredentialPassword |
Adobe Access 4.0 |
無し |
上で設定されたパッケージャー保護資格証明書ファイルのパスワードです。 |
|
HLSDrmPolicyFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるポリシーファイルのパスと名前です。 |
|
HLSDrmKeyServerURL |
Adobe Access 4.0 |
無し |
配信される再生リストに埋め込むためのキーサーバーのURLです。 |
|
PHLSOutputProtection |
(オプショナルです)PHLS |
無し |
クライアントで要求されるメディアのハードウェア出力保護を指定します。可な値はNone、BestEffort、Requiredです。 |
|
PHLSPlaybackExpiration |
(オプショナルです)PHLS |
24Hours |
コンテンツが再生可能な期間。可能な値は24Hours とUnlimitedです。 |
|
httpd.confファイルを編集し、 <Location hls-live>の下に以下のタグを追加します。
<Location /hls-live>
HLSHttpStreamingEnabled true
HttpStreamingLiveEventPath "../applications"
HttpStreamingContentPath "../applications"
HLSMediaFileDuration 10000
HLSSlidingWindowLength 6
HLSFmsDirPath ".."
HttpStreamingUnavailableResponseCode 503
HLSEncryptionScope server
HLSProtectionScheme PHLS
PHLSContentID httpd_conf
PHLSCommonKeyFile "../creds/liveeventkey.bin"
PHLSOutputProtection None
PHLSPlaybackExpiration Unlimited
</Location>
設定の要素についての詳細は、上記の表を参照してください。
httpd.confファイルを編集し、 <Location hls-live>の下に以下のタグを追加します。
<Location /hls-live>
HLSHttpStreamingEnabled true
HttpStreamingLiveEventPath "../applications"
HttpStreamingContentPath "../applications"
HLSMediaFileDuration 10000
HLSSlidingWindowLength 6
HLSFmsDirPath ".."
HttpStreamingUnavailableResponseCode 503
HLSEncryptionScope server
HLSProtectionScheme AdobeAccessV4
HLSDrmContentID httpd_conf
HLSDrmCommonKeyFile "<path to common key file>"
HLSDrmLicenseServerURL "<url of license server>"
HLSDrmTransportCertFile "<path to transport certificate file>"
HLSDrmLicenseServerCertFile "<path to license server certificate file>" HLSDrmPackagerCredentialFile "<path to packager credential file>" HLSDrmPackagerCredentialPassword ??????
HLSDrmPolicyFile "<path to policy file>"
HLSDrmKeyServerURL "<key server url>"
</Location>
設定の要素についての詳細は、上記の表を参照してください。
注:ローカル鍵配送では、HLSDrmKeyServerURLをhttp://faxs.adobe.comというダミーURLに設定することを推奨します。.
パブリッシュと再生についての情報は、「Vanilla」を参照してください。
アプリケーションレベルとイベントレベル
アプリケーションレベルやイベントレベルでHLSを設定することもできます。
Application.xmlファイルとEvent.xmlファイルにはどちらも、ライブのVanillaの暗号化設定を保持するHLSコンテナがあります。Application.xmlでは、そのコンテナは //Application/HDS/HLSにあります。Event.xmlでは、//Event/HLSにあります。
Vanilla
要素 |
デフォルト |
説明 |
/HLS |
無し |
コンテンツ保護の設定のコンテナです。 |
/HLS/Encryption |
無し |
Event.xmlファイルでのVanillaの暗号化設定がApplication.xmlファイルでの設定をオーバーライドすることを許可するには、enabled属性を"allow"に設定します。
Application.xmlファイルでVanilla暗号化を設定するには、enabled属性を"true"に設定します。これらの設定は、このアプリケーションの全てのライブイベントに適用されます。
Application.xmlファイルでのenabled属性のデフォルト値は"allow"です。 Event.xmlファイルでのデフォルト値は"false"です。 |
/HLS/Encryption/KeyFile |
無し |
コンテンツを暗号化するために使用されるデフォルトの暗号キーのパスです。 |
/HLS/Encryption/KeyURI |
無し |
クライアントが暗号化キーを取得するために使用するURIです。 |
ライブのVanilla暗号化をアプリケーションレベルで設定する
1 rootinstall/Apache2.2/conf/httpd.confファイルを開き、hlshttp_moduleを見つけます。
<IfModule hlshttp_module>
...
<Location /hls-live>
...
2 HLSEncryptionScopeディレクティブを非コメント化し、contentに設定します。
# Uncomment the following directives to enable encryption
# for this location:
HLSEncryptionScope content
# HLSEncryptionCipherKeyFile "../creds/liveeventkey.bin"
# HLSEncryptKeyURI "https://<ServerName>/hls-key/liveeventkey.bin"
<ServerName>パラメータには、Adobe Media ServerのIPアドレスかDNSを代入してください。
3 rootinstall/applications/livepkgrフォルダーのApplication.xmlファイルを編集し、以下を記述します。
<Application>
<HDS>
<HLS>
<Encryption enabled="true">
<KeyFile>C:\Program Files\Adobe\Adobe Media Server 5\creds\liveeventkey.bin</KeyFile>
<KeyURI>http://<server-ip>/hls-key/liveeventkey.bin</KeyURI>
</Encryption>
</HLS>
</HDS>
</Application>
4 「暗号化キーをクライアントに配送する」の手順に従い、SSL有りか無しのどちらかでサーバーがキーを配送するように設定します。これらの手順は、KeyURIディレクティブの/hls-keyパスを設定します。
5 Flash Media Live Encoderを開き、以下の設定でストリームをパブリッシュします。
• Format—H.264
• Keyframe Frequency—4 seconds
• AMS URL—rtmp://<server-name>/livepkgr
• Stream—encryption?adbe-live-event=encryption
6 iOSデバイスで、SDKを使用して開発したアプリケーションから以下のURLを要求します。
http://<servername>/hls-live/livepkgr/_definst_/encryption/encryption.m3u8
7 ストリームが暗号化されていることを確認するには、Apple Media Stream Validator Toolをストリームに対して実行してください。Technical Note TN2224を参照してください。
注:ライブイベントを作成するには、rootinstall/applications/livepkgr/events/_definst_/liveeventにあるlivepkgrディレクトリのコピーを作成します。そのコピーしたディレクトリの名前は、イベントの名前と同じである必要があります。
PHLS
rootinstall/applications/livepkgrフォルダーのApplication.xmlファイルを編集し、以下を記述します。
<Application>
<HDS>
<HLS>
<Encryption enabled="true" protection-scheme="PHLS">
<PHLS>
<ContentID>app_event_xml</ContentID>
<CommonKeyPath>common.bin</CommonKeyPath>
<KeyServerURL>faxs://example.com</KeyServerURL>
<OutputProtection>None</OutputProtection>
<PlaybackExpiration>Unlimited</PlaybackExpiration>
</PHLS>
</Encryption>
</HLS>
</HDS>
</Application>
要素についての更なる情報は、サーバーレベルの設定の表を参照してください。
パブリッシュと再生についての情報は、「Vanilla」を参照してください。
Adobe Access
rootinstall/applications/livepkgrフォルダーのApplication.xmlファイルを編集し、以下を記述します。
<Application>
<HDS>
<HLS>
<Encryption enabled="true" protection-scheme="AdobeAccessV4">
<AdobeAccessV4>
<ContentID>app_event_xml</ContentID>
<CommonKeyPath>common.bin</CommonKeyPath>
<LicenseServerURL>license server url </LicenseServerURL>
<TransportCertPath>transport.der</TransportCertPath>
<LicenseServerCertPath>server.der</LicenseServerCertPath>
<PackagerCredentialPath>production_packager.pfx</PackagerCredentialPath>
<PackagerCredentialPwd>??????</PackagerCredentialPwd>
<PolicyPath>policy.pol</PolicyPath>
<KeyServerURL>http://faxs.adobe.com</KeyServerURL>
</AdobeAccessV4>
</Encryption >
</HLS>
</HDS>
</Application>
要素についての更なる情報は、サーバーレベルの設定の表を参照してください。
パブリッシュと再生についての情報は、「Vanilla」を参照してください。
1 rootinstall/Apache2.2/conf/httpd.confファイルを開き、hlshttp_moduleを見つけます。
<IfModule hlshttp_module>
...
<Location /hls-live>
...
2 HLSEncryptionScopeディレクティブを非コメント化し、contentに設定します。
# Uncomment the following directives to enable encryption
# for this location:
HLSEncryptionScope content
# HLSEncryptionCipherKeyFile "../creds/liveeventkey.bin"
# HLSEncryptKeyURI "https://<ServerName>/hls-key/liveeventkey.bin"
<ServerName> パラメーターにはAdobe Media Server のIPアドレスかDNSを代入します。
3 rootinstall/applications/livepkgr/_definst_/encryptionフォルダーのEvent.xmlファイルを編集し、以下を記述します。
<Event>
<HLS>
<Encryption enabled="true">
<KeyFile>
C:\Program Files/Adobe/Adobe Media Server5/creds/liveeventkey.bin
</KeyFile>
<KeyURI>http://<server-ip>/hls-key/liveeventkey.bin</KeyURI>
</Encryption>
</HLS>
</Event>
4 「暗号化キーをクライアントに配送する」の手順に従い、SSL有りか無しのどちらかでサーバーがキーを配送するように設定します。これらの手順は、KeyURIディレクティブの/hls-keyパスを設定します。
5 Flash Media Live Encoderを開き、以下の設定でストリームをパブリッシュします。
• Format—H.264
• Keyframe Frequency—4 seconds
• AMS URL—rtmp://<server-name>/livepkgr
• Stream—encryption?adbe-live-event=encryption
6 iOSデバイスから以下のURLを要求します。
http://<ServerName>/hls-live/livepkgr/_definst_/encryption/encryption.m3u8
7 ストリームが暗号化されていることを確認するには、Apple Media Stream Validator Toolをストリームに対して実行してください。Technical Note TN2224を参照してください。
PHLS
rootinstall/applications/livepkgr/_definst_/encryption フォルダーのEvent.xmlファイルを編集し、以下を記述します。
<Event>
<HLS>
<Encryption enabled="true" protection-scheme="PHLS">
<PHLS>
<ContentID>app_event_xml</ContentID>
<CommonKeyPath>common.bin</CommonKeyPath>
<KeyServerURL>faxs://example.com</KeyServerURL>
<OutputProtection>None</OutputProtection>
<PlaybackExpiration>Unlimited</PlaybackExpiration>
</PHLS>
</Encryption>
</HLS>
</Event>
要素についての更なる情報は、サーバーレベルの設定の表を参照してください。
パブリッシュと再生についての情報は、「Vanilla」を参照してください。
Adobe Access
rootinstall/applications/livepkgr/_definst_/encryption フォルダーのEvent.xml ファイルを編集し、以下の<Event>を記述します。
<Event>
<HLS>
<Encryption enabled="true" protection-scheme="AdobeAccessV4">
<AdobeAccessV4>
<ContentID>app_event_xml</ContentID>
<CommonKeyPath>common.bin</CommonKeyPath>
<LicenseServerURL>license server url </LicenseServerURL>
<TransportCertPath>transport.der</TransportCertPath>
<LicenseServerCertPath>server.der</LicenseServerCertPath>
<PackagerCredentialPath>production_packager.pfx</PackagerCredentialPath>
<PackagerCredentialPwd>??????</PackagerCredentialPwd>
<PolicyPath>policy.pol</PolicyPath>
<KeyServerURL>http://faxs.adobe.com</KeyServerURL>
</AdobeAccessV4>
</Encryption>
</HLS>
</Event>
要素についての更なる情報は、サーバーレベルの設定の表を参照してください。
パブリッシュと再生についての情報は、「Vanilla」を参照してください。
ライブイベント
Adobe Access用のユニークな暗号化キー(CEK)を生成するために、ストリームまでのURLパス(設定されたコンテンツのパスからの相対パス)が、ストリーム名を除き、コンテンツIDとして使用されます。例えば、http://example.com/hls-live/livepkgr/definst/liveevent/livestream.m3u8というパスのコンテンツIDは、livepkgr/definst/liveeventとなります。
オンデマンドストリーミングでのPHLSは、以下のレベルで設定します。
サーバー—rootinstall/Apache2.2/conf/httpd.conf
ストリーム—jit.conf ファイルを作成し、コンテンツと同じディレクトリにコピーします。
使用開始
基本的な設定でPHLSを設定するには、以下の手順に従います。
❖ <root-install>/Apache 2.2/conf/に移動します。httpd.confファイルを編集し、HLSEncryptionScopeタグとHLSProtectionSchemeタグを<Location /hls-vod>ディレクティブの下に追加します。
<Location /hls-vod>
HLSHttpStreamingEnabled true
HLSMediaFileDuration 8000
HttpStreamingContentPath "../webroot/vod"
HLSFmsDirPath ".."
HLSJITConfAllowed true
HLSEncryptionScope server
HLSProtectionScheme PHLS
Options -Indexes FollowSymLinks
</Location>
注:この設定は、デフォルトの設定でサーバーレベルでPHLSを有効化します。
sample1_1500kbps.f4vというメディアファイルが、デフォルトのインストールで<root-install>/webrootにインストールされます。このメディアファイルは以下のURLで再生できます。
http://<server-ip>/hls-vod/sample1_1500kbps.f4v.m3u8
詳細な設定
以下のセクションでは詳細な設定を提供します。
サーバーレベル
このlocationディレクティブを使用して、サーバーレベルでHLSを設定し、サーバーレベルのコンテンツ保護を要求される全てのストリームに適用することができます。
Vanilla
Apacheのhttpd.conf fileファイルで以下のhlshttp_module用ディレクティブを設定します。
ディレクティブ |
デフォルト |
説明 |
HLSEncryptionScope |
Off |
暗号化のスコープを設定します。以下が可能な値です。
server —pacheの暗号化の設定が全てのコンテンツに適用されます。サーバーはEvent.xmlやApplication.xml(ライブ)、jit.conf(オンデマンド)のコンテンツごとの暗号化設定を無視します。
content —Apacheの暗号化の設定は無視されます。サーバーはEvent.xmlやApplication.xml(ライブ)、jit.conf(オンデマンド)のコンテンツごとの暗号化設定を使用します。
Off —サーバー全体で暗号化がオフになります。 |
HLSEncryptCipherKeyFile |
無し |
コンテンツを暗号化するために使用されるデフォルトの暗号キーです。 |
HLSEncryptKeyURI |
無し |
クライアントが暗号化キーを取得するために使用するURIです。「暗号化キーをクライアントに配送する」を参照してください。 |
Vanillaコンテンツ保護をサーバーレベルで設定するには、httpd.confファイルでHLSEncryptionScopeをserverに設定します。この設定は、このLocationディレクティブへのすべての要求にhttpd.confファイルの設定を使うようサーバーに指示します。
1 rootinstall/Apache2.2/conf/httpd.conf ファイルを開き、hlshttp_moduleを見つけます。
<IfModule hlshttp_module>
...
<Location /hls-vod>
...
2 以下を非コメント化します。
# Uncomment the following directives to enable encryption
# for this location:
HLSEncryptionScope server
HLSEncryptionCipherKeyFile "../creds/vodkey.bin"
HLSEncryptKeyURI "https://<ServerName>/hls-key/vodkey.bin"
<ServerName>パラメーターにはAdobe Media ServerのIPアドレスかDNSを代入します。
3 「暗号化キーをクライアントに配送する」の手順に従い、SSL有りか無しのどちらかでサーバーがキーを配送するように設定します。これらの手順は、HLSEncryptKeyURI ディレクティブの/hls-keyパスを設定します。
4 iOSデバイスから以下のURLを要求します。
http://<ServerName>/hls-vod/sample2_1000kbps.f4v.m3u8
5 ストリームが暗号化されていることを確認するには、Apple Media Stream Validator Toolをストリームに対して実行してください。Technical Note TN2224を参照してください。
以下の表がApacheのhttpd.confファイルのhlshttp_module用ディレクティブです。
パラメーター |
以下の方式で必須 |
デフォルト |
説明 |
HLSProtectionScheme |
Adobe Access 4.0, PHLS |
Vanilla |
コンテンツに使用される保護スキームを決定します。保護スキームはVanilla、AdobeAccessV4、PHLSが使用可能です。HLSProtectionSchemeは暗号化が有効化された場合に効力を発揮します。暗号化のレベルを設定するにはHLSEncryptionScopeパラメーターを使用します。 |
HLSDrmCommonKeyFile |
Adobe Access 4.0 (オプショナル)PHLS |
PHLSでは ../creds/commonKey.bin |
../creds/commonKey.binにある共通キーファイルの名前を設定します。 |
HLSDrmContentID/ PHLSContentID |
(オプショナル)Adobe Access 4.0、(オプショナル)PHLS |
イベントID |
ライセンスをマップするためのコンテンツIDです。 |
HLSDrmLicenseServerURL |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるライセンスサーバーのURLです。 |
HLSDrmTransportCertFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるトランスポート証明書ファイルです。 |
HLSDrmLicenseServerCertFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるライセンスサーバー証明書が含まれるファイルです。 |
HLSDrmPackagerCredentialFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるパッケージャー保護資格証明書が含まれるファイルです。 |
HLSDrmPackagerCredentialPassword |
Adobe Access 4.0 |
無し |
上で設定されたパッケージャー保護資格証明書ファイルのパスワードです。 |
HLSDrmPolicyFile |
Adobe Access 4.0 |
無し |
コンテンツを保護するために使用されるポリシーファイルのパスと名前です。 |
HLSDrmKeyServerURL |
Adobe Access 4.0 |
無し |
配信される再生リストに埋め込むためのキーサーバーのURLです。 |
PHLSOutputProtection |
(オプショナル)PHLS |
None |
クライアントで要求されるメディアのハードウェア出力保護を指定します。可能な値はNone、BestEffort、Requiredです。 |
PHLSPlaybackExpiration |
(オプショナル)PHLS |
24Hours |
コンテンツが再生可能な期間。可能な値は24Hours とUnlimitedです。 |
PHLS
httpd.confファイルを編集し、<Location /hls-vod>ディレクティブを以下のように更新します。
<Location /hls-vod>
HLSHttpStreamingEnabled true
HLSMediaFileDuration 8000
HttpStreamingContentPath "../webroot/vod"
HLSFmsDirPath ".."
HLSJITConfAllowed true
HLSEncryptionScope server
HLSProtectionScheme PHLS
PHLSContentID httpd_conf
PHLSCommonKeyFile "../creds/liveeventkey.bin"
PHLSOutputProtection None
PHLSPlaybackExpiration Unlimited
</Location>
iOSデバイスから以下のURLを要求します。
http://<ServerName>/hls-vod/sample2_1000kbps.f4v.m3u8
要素についての更なる情報は、「Vanilla」を参照してください。
Adobe Access
httpd.confファイルを編集し、<Location /hls-vod>ディレクティブを以下のように更新します。
<Location /hls-vod>
HLSHttpStreamingEnabled true
HLSMediaFileDuration 8000
HttpStreamingContentPath "../webroot/vod"
HLSFmsDirPath ".."
HLSJITConfAllowed true
HLSEncryptionScope server
HLSProtectionScheme AdobeAccessV4
HLSDrmContentID httpd_conf
HLSDrmCommonKeyFile "<path to common key file>"
HLSDrmLicenseServerURL "<url of license server>"
HLSDrmTransportCertFile "<path to transport certificate file>"
HLSDrmLicenseServerCertFile "<path to license server certificate file>"
HLSDrmPackagerCredentialFile "<path to packager credential file>"
HLSDrmPackagerCredentialPassword ??????
HLSDrmPolicyFile "<path to policy file>"
HLSDrmKeyServerURL "<key server url>"
</Location>
iOSデバイスから以下のURLを要求します。
http://<ServerName>/hls-vod/sample2_1000kbps.f4v.m3u8
注:ローカル鍵配送では、HLSDrmKeyServerURLをhttp://faxs.adobe.comというダミーURLに設定することを推奨します。.
要素についての更なる情報は、「Vanilla」を参照してください。
ストリームレベル
個々のメディア一式について設定するには、httpd.confファイルで、HLSEncryptionScopeをcontentに設定します。この設定は、jit.confファイルでの設定がhttpd.confファイルでの設定を上書きするようにサーバーに指示します。
オンデマンドメディアと同じディレクトリにあるjit.confで以下の要素を設定します。
要素 |
デフォルト値 |
説明 |
//manifest/hds:encryption |
無し |
設定の親要素です。この要素にはenabled属性があります。PHLSによるコンテンツ保護を有効化するには、このenabled属性を"true"に設定します。値はデフォルトでは"false"です。 |
//manifest/hds:encryption/hds:keyfile |
無し |
コンテンツの暗号化に使用されるデフォルトの暗号キーです。 |
//manifest/hds:encryption/hds:keyuri |
無し |
クライアントが暗号化キーを取得するために使用するURIです。「暗号化キーをクライアントに配送する」を参照してください。 |
Vanilla
1 ライブのPHLSをストリームレベルで設定するには、rootinstall/Apache2.2/conf/httpd.confファイルを開いてhlshttp_moduleを見つけます。
<IfModule hlshttp_module>
...
<Location /hls-vod>
...
2 HLSEncryptionScopeを非コメント化し、contentに設定します。
# Uncomment the following directives to enable encryption
# for this location:
HLSEncryptionScope content
# HLSEncryptCipherKeyFile
# HLSEncryptKeyURI
3 jit.conf設定ファイルを作成し、オンデマンドメディアと同じディレクトリにコピーします。
<hds:hls>
<hds:encryption enabled="true">
<hds:keyfile>../creds/content.key</hds:keyfile>
<hds:keyuri>https://<server-name>/hls-key/content.key</hds:keyuri>
</hds:encryption>
</hds:hls>
4 「暗号化キーをクライアントに配送する」の手順に従い、SSL有りか無しのどちらかでサーバーがキーを配送するように設定します。これらの手順は、/hds:keyuri要素の/hls-keyパスを設定します。
5 vodkey.binファイルをrootinstall/credsからrootinstall/webroot/keysにコピーします。
6 iOSデバイスから以下のURLを要求します。
http://<servername>/hls-vod/sample2_1000kbps.f4v.m3u8
7 ストリームが暗号化されていることを確認するには、Apple Media Stream Validator Toolをストリームに対して実行してください。Technical Note TN2224を参照してください。
PHLS
以下のサンプル設定を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://ns.adobe.com/f4m/1.0" xmlns:hds="http://ns.adobe.com/hds-package/1.0">
<hds:hls>
<hds:encryption enabled="true" protection-scheme="PHLS">
<hds:PHLS>
<hds:content-id>jit_conf</hds:content-id>
<hds:common-key-file>
root_install/creds/vodkey.bin
</hds:common-key-file>
<hds:output-protection>None</hds:output-protection>
<hds:playback-expiration>Unlimited</hds:playback-expiration>
</hds:PHLS>
</hds:encryption>
</hds:hls>
</manifest>
iOSデバイスから以下のURLを要求します。
http://<ServerName>/hl-vod/sample2_1000kbps.f4v.m3u8
PHLSを使用するようにサーバーを設定するには、Vanillaセクションで言及されている手順を参照してください。設定の要素についての詳細は、上記の表を参照してください。
Adobe Access
以下のサンプル設定を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://ns.adobe.com/f4m/1.0" xmlns:hds="http://ns.adobe.com/hds-package/1.0">
<hds:hls>
<hds:encryption enabled="true" protection-scheme="AdobeAccessV4">
<hds:AdobeAccessV4>
<hds:content-id>jit_conf</hds:content-id>
<hds:common-key-file> root_install/creds/vodkey.bin
</hds:common-key-file>
<hds:license-server-url> http://mylicenseserver.myhost.com
</hds:license-server-url>
<hds:transport-cert-file> production_transport.der
</hds:transport-cert-file>
<hds:license-server-cert-file> production_license_server.der
</hds:license-server-cert-file>
<hds:packager-credential-file> production_packager.pfx
</hds:packager-credential-file>
<hds:packager-credential-password>
??????
</hds:packager-credential-password>
<hds:policy-file>policy.pol</hds:policy-file>
<hds:key-server-url>http://faxs.adobe.com</hds:key-server-url>
</hds:AdobeAccessV4>
</hds:encryption>
</hds:hls>
</manifest>
ローカル鍵配送では、HLSDrmKeyServerURLをhttp://faxs.adobe.comというダミーURLに設定することを推奨します。
iOSデバイスから以下のURLを要求します。
http://<ServerName>/hl-vod/sample2_1000kbps.f4v.m3u8
PHLSを使用するようにサーバーを設定するには、Vanillaセクションで言及されている手順を参照してください。設定の要素についての詳細は、上記の表を参照してください。
VODストリーム
Adobe Access用のユニークな暗号化キー(CEK)を生成するために、ストリームまでのURLパス(設定されたコンテンツのパスからの相対パス)が、ストリーム名も含めて、コンテンツIDとして使用されます。例えば、http://example.com/hls-vod/mymedia/sample.f4v.m3u8というパスのコンテンツIDは、mymedia/sample.f4vとなります。
デフォルトのコンテンツIDを変更するには、設定ファイルであるevent.xml、application.xmlまたはjit.confで新しいコンテンツIDを指定します。
同じコンテンツの複数のレンディションでは、各レンディションでCEKが同じである必要があります。同じコンテンツの複数のレンディションで同じCEKを使用するには、以下でコンテンツIDを設定します。
• application.xml
• event.xml(ライブイベント)またはjit.conf (VODイベント)
レンディションは、Adobe Accessの設定を使用して保護することができます。
リーフライセンスを埋め込む設定がオフにされている場合でも、Adobe Media Serverはそのようなポリシーをサポートします。ただし、リーフライセンスがDRMメタデータに埋め込まれないものは除きます。
注:サポートは、ライセンスサーバー保護資格証明書とパスワードの単一ペアに限られます。
以下の表で詳細な設定を提供します。
パラメーター |
説明 |
次の方式で必須 |
デフォルト値 |
HLSDrmEmbedLeafLicense(サーバーレベル)
HLS/Encryption/AdobeAccessV4/EmbedLeafLicense(アプリケーションレベルとイベントレベル)
hds:hls/hds:encryption/hds:AdobeAccessV4/hds:embed-leaf-license (VODユースケースのストリームレベル) |
(オプショナルです)チェーンライセンスを使用して生成されたポリシーでリーフライセンスの埋め込みを有効化します。可能な値は"true"もしくは"false"です。 |
AdobeAccessV4 |
false |
HLSDrmLicenseServerCredentialFile (サーバーレベル)
HLS/Encryption/AdobeAccessV4/LicenseServerCredentialFile(アプリケーションレベルとイベントレベル)
hds:hls/hds:encryption/hds:AdobeAccessV4/hds:license-server-credential-file(VODユースケースのストリームレベル) |
HLSDrmEmbedLeafLicenseがtrueに設定されている場合は必須です。 このlocationでコンテンツを保護する際に使用されるライセンスサーバー保護資格証明書です。 |
AdobeAccessV4 |
無し |
HLSDrmLicenseServerCredentialPassword(サーバーレベル)
HLS/Encryption/AdobeAccessV4/LicenseServerCredentialPassword(アプリケーションレベルとイベントレベル)
hds:hls/hds:encryption/hds:AdobeAccessV4/hds:li cense-server-credential-password(VODユースケースのストリームレベル) |
HLSDrmEmbedLeafLicenseがtrueに設定されている場合は必須です。 上で設定されたライセンスサーバー保護資格証明書のパスワードです。 |
AdobeAccessV4 |
無し |
この機能を有効化するには、以下の設定ディレクティブを対応する設定ファイルに追加する必要があります。
ディレクティブ |
次の方式で必須 |
デフォルト値 |
説明 |
HLSDrmEnableKeyRotation/ PHLSEnableKeyRotation(サーバーレベル) EnableKeyRotation(アプリケーションレベルとイベントレベル) hds:hls/hds:encryption/hds:Flash AccessV4/hds:enable-key-rotation(VODユースケースのストリームレベル) |
FlashAccessV4と PHLSでオプショナル |
true |
デフォルトで有効化されています。キーローテーションを無効化するには、この属性を"false"に設定します。 |
HLSDrmKeyRotationInterval/ PHLSKeyRotationInterval(サーバーレベル) KeyRotationInterval(アプリケーションレベルとイベントレベル) hds:hls/hds:encryption/hds:FlashAccessV4/hds:key-rotation-interval(VODユースケースのストリームレベル) |
FlashAccessV4と PHLSでオプショナル |
15 |
指定された秒数後にキーが変更されます。 |
HDSストリームでは、ローテーションされるキーは帯域内で処理されるため、キーローテーションはクライアントのパフォーマンスには何ら影響せず、ライセンスサーバーのスケーリングにも影響はありません。
HLSでは、リモート鍵配送を使用した際はキーローテーションはキーサーバーからキーが送られてくることになります。ローカル鍵配送では、M3U8ファイルが更新され、キーはその中に埋め込まれます。
この機能を有効化するには、httpd.confファイルで以下のディレクティブを追加する必要があります。
ディレクティブ |
必須 |
デフォルト値 |
説明 |
HLSEmbedMetadata |
いいえ |
VODではtrue Liveではfalse |
再生リストへのメタデータ埋め込みを有効化します。Falseの値は、HLSMetaPackagingEnabledがtrueの場合のみ適用できます。 |
HLSMetaMaxAge |
いいえ |
3600秒 |
m3u8応答のCache-Controlヘッダーで設定されるmax-ageです。-1という値はCache-Controlヘッダーが設定されないよう指定します。もし値が指定されなかった場合は、デフォルト値の3600秒だと推定されます。 |
HLSMetaPackagingEnabled |
いいえ |
true |
(オプション)このlocationでメタデータのジャスト・イン・タイムのパッケージングを有効化します。可能な値は”true”または”false”です。 |
ホワイトリストファイル(拡張子.airwhitelist)とは、各エントリが1つのアプリケーションに対応するような、4つのフィールド(publisher-id、app-id、min-ver、max-ver)を識別する複数のエントリを含んだテキストファイルです。publisher-idは必須で、残りのフィールドはオプショナルです。ホワイトリストファイルは、アプリケーションに署名をするために使用した証明書をホワイトリストツールに渡すことで生成することができます。現在ホワイトリストツールはpublisher-idの展開のみサポートしていますが、残りのフィールドは(必要なら)手動で更新することができます。プレイヤー制限は設定で有効化することができ、Adobe Media Serverがホワイトリストファイル(複数のホワイトリストファイルを置くことや、1つのホワイトリスト中に複数のエントリを記述することもサポートされています)を見つけることのできるフォルダーを指定する必要があります。Adobe Media Serverは、メタデータに埋め込むライセンスにホワイトリストファイルから得た識別子のリストを追加します。
この機能を有効化するには、httpd.confファイルで以下の設定ディレクティブを追加する必要があります。
ディレクティブ |
以下の方式で必須 |
デフォルト値 |
説明 |
PHLSPlayerBindingEnabled(サーバーレベル)
HLS/Encryption/PHLS/PlayerBindingEnabled(アプリケーションレベルとイベントレベル)
hds:hls/hds:encryption/hds:phls/hds:player-binding(VODユースケースのストリームレベル) |
PHLS |
false |
ホワイトリストを使用したプレイヤー制限を有効化します。可能な値は"true"または"false"です。 |
PHLSWhitelistFolder(サーバーレベル)
HLS/Encryption/PHLS/WhitelistFolder(アプリケーションレベルとイベントレベル)
hds:hls/hds:encryption/hds:phls/hds:whitelist-folder (VODユースケースのストリームレベル) |
PHLS |
無し |
(HLSDrmPlayerBindingEnabledがtrueの場合は必須) ホワイトリストファイルを含むディレクトリの場所です。HLSDrmPlayerBindingEnabledがtrueの場合のみ機能します。 |
以下のPHLSの設定でクライアントが暗号化キーを取得するために使用するパスを指定します。
• HLSEncryptKeyURI
• //manifest/hds:hls/hds:encryption/hds:keyuri
• //Application/HDS/HLS/Encryption/KeyURI
• //Event/HLS/Encryption/KeyURI
オンデマンドとライブの両方においてVanilla暗号化では、ApacheのHLSモジュールを通じてクライアントに暗号化キーを配送します。このモジュールは、リクエストに応答する前にキーを平文に戻します。
注意:暗号化の設定で使用されるキーファイルは、必ず暗号化されている必要があることに注意してください。
キーファイルが安全に配送されることを保証するために、SSL上でのクライアント認証を有効化することができます。リファレンスの設定ファイルとApple CAバンドルが以下の場所にインストールされます。
rootinstall/Apache2.2/conf/httd-hls-secure.conf
rootinstall/creds/certs/ca
このhttpd-hls-secure.confファイルは、暗号化キーホスティングを有効化した/hls-keyというlocationでクライアント認証を有効化し、デフォルトのSSLポートでのバーチャルホストをどのように設定するかを実例説明しています。しかし、これはリファレンスの設定に過ぎません。運用するシステムで認証を保証するためには、ご自身のシステムの配置に合わせて設定をカスタマイズしてください。
注:iOSクライアントが提示するSSL証明書は最新のものである必要があります。もしクライアントが期限切れの証明書を提示した場合は、クライアント認証は失敗し、(クライアント側で)ユーザーにエラーメッセージが表示されます。古いiOSがインストールされているiOSクライアントは、この問題に遭遇する可能性があります。
SSLクライアント認証を使用してキーを配送する
1 Apacheのhttpd.confファイルで以下の行を非コメント化します。
"#LoadModule ssl_module"
"#Include conf/httpd-hls-secure.conf"
2 システム配置に合わせてrootinstall/Apache2.2/conf/httpd-hls-secure.confファイルのSSLプロパティをカスタマイズします。このカスタマイズは認識されているCAからのSSL証明書の取得を含みます。
重要:サーバーのために生成されるSSL証明書は、例えテスト環境であっても、FQDN(Fully Qualified Domain Name)であるCNを持つ必要があります。そうでなければ、iOSクライアントは証明書を提示しない可能性があり、クライアント認証は失敗します。クライアント認証が失敗した場合は、キーファイルは配送されずiOSクライアントはクラッシュします。これは既知のAppleのバグです。
3 Apacheを再起動します。
SSL無しで鍵を配送する
1 Apacheのhttpd.confファイルで、<IfModule hlshttp_module>の行の下に以下を追加します。
<Location /hls-key>
HLSEncryptHostCipherKey true
HLSFmsDirPath ".."
HLSEncryptKeyRepository "../creds"
</Location>
Locationのパスはどんな値でも構いません。HLSEncryptKeyRepositoryディレクティブでキーの場所を指定します。デフォルトではキーはrootinstall/credsフォルダーにあります。
2 Apacheを再起動します。
キーホスティングを設定するには、Apacheのhttpd.confファイルで以下のパラメーターを使用します。
パラメーター |
説明 |
デフォルト値 |
HLSEncryptHostCipherKey |
このlocationで暗号キーホスティングを有効化(true)または無効化(false)します。 |
false |
HLSEncryptKeyRepository |
キーファイルを含むフォルダーパスです。 |
無し |
AMSは、異なるレベル(サーバー、アプリケーション、ストリーム、イベント)のコンテンツには異なるコンテンツ暗号化キーを使用することをサポートしています。キーは、コンテンツの場所と共通キーの場所に基づいて生成されます。
コンテンツ暗号化キーの配送モードはポリシーファイルで指定します。Adobe Access 4.0保護スキームでは、HLSDrmPolicyFileパラメーターでポリシーを設定します。PHDS保護スキームでは、HLSDrmOutputProtectionとHLSDrmPlaybackExpirationを使用します。
キーサーバーのURLは、ポリシーファイルで指定された鍵配送モードによります。リモート鍵配送では、KeyServerURLパラメーターを使用してキーサーバーのURLを指定します。リモート鍵配送でのURLのフォーマットは、https://<customers-keyserver-uri>です。例えば、https://faxs.adobe.comです。ローカル鍵配送では、KeyServerURLの値は必ずfaxs://faxs.adobe.comを指定してください。
注:PHLSではローカル鍵配送のみをサポートし、DRMが有効である限りAMSはCEKを配送することができません。
適応ビットレートをサポートするためには、 HTTP Live Streamingでは同じコンテンツの異なるレンディションの各再生リストファイルを参照する1つのバリアント再生リストファイルが必要です。AdobeAccess for iOS SDKは、バリアント再生リストファイルで参照される各ストリームが同じポリシーとコンテンツ暗号キーで暗号化されることを必要とします。ゆえに、それぞれの暗号化されたストリームは(埋め込まれているか帯域外から提供されるかに関わらず)、#EXT-X-FAXS-CM タグで参照される同じDRMメタデータを持つことになります。
AdobeAccessServerの保護されたバリアント再生リストは#EXT-X-FAXS-CMタグも含む必要があります。バリアント再生リストの#EXT-X-FAXS-CMタグの値は、各ストリームのDRMメタデータを参照する相対URIです。クライアントでは、バリアント再生リスト中の#EXT-X-FAXS-CMタグがDRMセッションを作成するために使われます。同じDRMセッションがそのバリアント再生リスト中の全ての暗号化されたM3U8ファイルに使用されます。
以下にAdobe Accessの保護されたバリアント再生リストの例を示します。
#EXTM3U
#EXT-X-FAXS-CM:URI="hls-vod-faxsv4/sample_mbr_mp4_main_3_1/8_mp4_AAC_212Kbps_720_480_main_3_1.mp4.drmmeta"
#EXT-X-STREAM-INF:PROGRAM-ID=41,BANDWIDTH=212000, CODECS="avc1.77.31, mp4a.40.5" hls-vod-faxsv4/sample_mbr_mp4_main_3_1/8_mp4_AAC_212Kbps_720_480_main_3_1.mp4.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=41,BANDWIDTH=307000, CODECS="avc1.77.31, mp4a.40.5" hls-vod-faxsv4/sample_mbr_mp4_main_3_1/8_mp4_AAC_307Kbps_720_480_main_3_1.mp4.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=41,BANDWIDTH=512000, CODECS="avc1.77.31, mp4a.40.5"
http://my.server.com/hls-vod-faxsv4/sample_mbr_mp4_main_3_1/8_mp4_AAC_512Kbps_720_480_main_3_1.mp4.m3u8
注:このバリアント再生リストは、Adobe Access M3U8形式で提供される必要があります。例えば、 http://my.server.com/variantPlaylist.m3u8?faxs=1のように、?faxs=1をURLに付加する必要があります。
最終更新日 2013/9/30