메뉴 닫기

Nginx Secure 모듈을 이용한 보안링크 #2 (RTMP VOD)

Nginx Secure 모듈을 이용한 보안링크

Nginx Secure 모듈을 이용한 보안링크 (RTMP VOD)#2

 

Nginx RTMP VOD URL에 Secure Link 링크 와 같이 사용

기본적인 사용방법은 HTTP 방식과 동일 하며, md5형태만 RTMP VOD 형태로

변경해주면 됩니다

 

■ RTMP 사용을 위한 모듈 설치는

Nginx RTMP 모듈을 이용한 스트리밍 http://idchowto.com/?p=13416  참조

 

 

1. RTMP VOD Secure link 사용을 위한 nginx.conf 설정

     # 기본 nginx.conf rtmp 설정에 on_play 라인 추가

        on_play http://nginx server ip:8080/secure_smile

       # 포트 8080 및 secure_link location 설정

 

server {

        listen 8080;

        server_name nginx server ip;

 

        location /secure_smile {

 

            # set connection secure link

            secure_link $arg_st;

            secure_link_md5 smilekey$arg_app/$arg_name;   #md5 부분이 일반 URL 링크와는 차이가 있음

 

            # bad hash

            if ($secure_link = “”) {

                return 501;

            }

 

            # link expired

            if ($secure_link = “0”) {

                return 502;

            }

            return 200;

        }

    }

 

 

3. RTMP VOD 보안링크 호출

     호출은 보안링크 호출방법과 동일하며 파일 호출만 RTMP VOD 형태로 변경을 해주면 된다

     1) 보안 URL 호출 방법

         – MD5 Hash 형태로 변환

 

# echo -n ‘smilekeyvod/mp4:test.mp4’ | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

42MLDAkOg9btcKiB2HCUeQ

 

– smilekey : nginx.conf 파일에서 설정한 값으로 지정

 

         – RTMP VOD 보안 링크 호출

            MD5 Hash 값으로 변환된 값을 파일명뒤에 nginx.conf에서 설정한 값으로 url 뒤에 st라는 인자 값을

             입력해주면 된다

 

 

rtmp://nginx server ip/vod/mp4:test.mp4?st=42MLDAkOg9btcKiB2HCUeQ

 

     3) URL 만료 시간을 지정한 보안링크

         – nginx.conf 파일 수정

 

 

 

    secure_link $arg_st;      ->  secure_link $arg_st,$arg_expired;

    secure_link_md5 smilekey$uri;      ->  smilekey$arg_app/$arg_name$expired;

# nginx.conf 파일에서 해당 라인을 위와 같이 수정 후 재시작

 

         – URL 만료시간을 지정한 보안링크 호출

           MD5 Hash 형태로 변환하는 방법은 동일하며, UTC형태로 변환된 시간을 마지막 부분에 추가후 MD5 Hash 형태로

           변환한다

 

 

 

 

   #date +%s     리눅스 상에서 명령어로 쉽게 UTC 변환이 가능하다

   #date -d “+1 hours” +%s     1시간뒤에 만료일을 지정할 것이므로 1시간뒤의 UTC 값으로 변환

    1439432498

   #echo -n ‘smilekeyvod/mp4:test.mp41439432498’ | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

    – test.png 뒤에 1시간 후인 UTC 시간 값을 추가후 MD5 Hash 형태로 변환

 

   rtmp://nginx server ip/vod/mp4:test.mp4?st=42MLDAkOg9btcKiB2HCUeQ&expired=1439432498

    – 현재시간에서 1시간후에는 403 에러는 출력하면서 정상적으로 호출이 불가능하며, 만료전까지는 이미지 호출이

      정상적으로 된다

 

※ 참고사항

테스트 해보면서 rtmp nginx.conf에서 “notify_method get;” 해당 라인을 추가해 줘야지만 정상적으로

보안링크 호출이 가능 했으며, 위 설정 파일에는 on_play 포트부분이 8080으로 되어있는데 해당 부분을 80포트로

할 경우에는 정상적으로 호출이 안 된다

 

 

앞에서 테스트했던 secure link 와 모든 부분이 동일 하며, RTMP VOD에서 적용할 때 주의해야 할 부분은

md5 형태만 다르기 때문에 이부분만 참고해서 적용을 하면 쉽게 Nginx에서 RTMP VOD 모듈을 이용한 보안 스트리밍을

적용을 할 수 있습니다

 

Ϙ

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x