nginxでSecureLinkを構築

やりたい事は、rtmpで映像配信時 rtmp://にセキュリティをかけたい。

rtmp:// urlが拡散されて誰でもアクセスされるという事を防ぎたい。

参考はこちら
http://server-setting.info/centos/nginx-secure-link.html

このサイトを見ながら、セキュアリンクを実現してみる。

http://nginx.org/en/docs/http/ngx_http_secure_link_module.html

This module is not built by default, it should be enabled with the –with-http_secure_link_module configuration parameter.

build する時に、–with-http_secure_link_moduleをつけないとダメ―。

コンパイルの仕方はこちらから

Debian NginxでHLSライブストリーミング 手順まとめ

PHPも動かしたいので、動かし方が分からないかたはこちら

nginxでphpを動かす

今回はこんな感じでconfigureしてみた。

 

ちなみに、再コンパイルする際には、既存のファイル等を削除しなくてもいいみたい。

会員登録などで
「下のリンクをクリックしてください
http://hanako.jp/regist/reg.php?ap9eur0jasdfjsdljfaeijeifja
このURLは1時間有効です」

のようなやつをnginxで実現する

securelink.php

すると、シークレットリンクには

このようなリンクが出力される。

セキュアディレクトリを作成し、index.htmlを作成する

とすると、リンクをクリクすればそのままホームページは見れる

その後が問題で、このセキュアなリンクが正しいかを判断するために、secure_link,secure_link_md5の2つのディレクティブを利用

secure_link : セキュアなリンク情報(URI,URLパラメータ)から、認証に使用する情報を設定します。
secure_link_md5 : セキュアなリンク情報(URI,URLパラメータ)および秘密鍵から、 md5 で暗号化した情報を作成します。 ここで作成した情報が、先の secure_link で設定した情報と一致するか否かによって認証を行います。

nginx.confに以下を追加する

この設定がうまくいっていると、

シークレットリンクをクリックした際に

時間内
おめでとうございます。
おめでとうございます。
あなたは、見事にこのページを見ることができました。

時間外
403 Forbidden
nginx/1.11.4

と表示される。この仕組みを生かしてrtmp 配信も時間制限つけてみる

Streaming with nginx-rtmp-module Secure links