와우자 서버 https ssl 설정 및 hls 스트리밍 방법은 letsencrypt 인증서 설치 (certbot),pem인증서를 jks로 변경(wowza-letsencrypt-converter),wowza server에서 ssl포트 추가하면 됩니다.
목차
WOWZA 스트리밍 서버
PC뿐 아니라 테블릿, 스마트폰 등에서도 실시간방송, 라이브 스트리밍, VOD 등 HLS streaming server로 wowza를 사용합니다. wowza서버는 가장 안정적인 서버로 평가받고 있으며, 운영체제나, 접속디바이스의 특성을 가리지 않고 가장 폭넓게 스트리밍서버로의 역할을 하고 있습니다.
설치를 마치면 기본포트가 http프로토콜을 1935포트를 통해 HLS 스트리밍을 실행하게되며, https ssl 전송을 하는 방법에 대한 설명입니다.
와우자 스트리밍 서버 https ssl 설정
무료 SSL 설정방법
- letsencrypt 인증서 설치 (certbot)
- pem인증서를 jks로 변경(wowza-letsencrypt-converter)
- java설치
- java 명령 배치파일작성
- wowza server에서 ssl포트 추가
유료 StreamLock 구독으로 SSL 설정방법
wowza에서 자체적으로 SSL인증서인 StreamLock을 지원한다. 1년마다 갱신이 필요하며, StreamLock을 갱신하려면 wowza support라이센스를 매년 구독해야 하기 때문에 추천하지 않습니다. (비용은 240만원 선) https://blog.naver.com/blueport_blog/221486131337
무료 인증서 letsencrypt ssl certbot 설치
SSL 전송을 위해 인증서가 필요하며 무료로 발급받을 수 letsencrypt인증을 받습니다. letsencrypt을 windows server에서 받기위해서는 두가지 방법이 있습니다.
윈도우용 letsencrypt 인증서 발급 프로그램
- cerbot
- win-acme
wowza서버 인증서 규격은 .jks포멧을 사용하며 윈도우에서 이포멧로 변환하기위해서는 pem포멧의 인증파일을 변환해주는 유틸리티가 있기때문에 certbot을 사용합니다.
프로그램 다운로드는 https://github.com/certbot/certbot/releases 에서 받습니다.
설치시 주의사항으로 프로그램 설치 경로를 “C:\Certbot”으로 변경해 설치하며 설치완료 후 관리자모드로 명령프롬프트 실행 후 아래 명령어를 실행해 인증서를 발급받는다.
cd c:\certbot
certbot certonly --standalone --preferred-challenges http -d www.mydoamin.co.kr
certbot 인증서만들기 상세정보는 Certbot SSL인증서 만들기 5단계 를 참고합니다.
인증서는 C:\Certbot\live 폴더에 생성된것을 확인할 수 있으며, 인증서는 3개월간 유효하기때문에 자동으로 갱신해줘야하는데 이미 윈도우 작업스케줄러에 등록이 되어 자동관리(갱신)됩니다.
java설치
pem파일을 .jks로 변환해주는 유틸리티 사용을 위해 java8을 설치하는데 java 다운로드는 https://www.oracle.com/java/technologies/downloads/#java8 에서 다운받아 기본값으로 설치합니다.
설치후 수동으로 등록해줘야하는 작업이 있는데 시스템 환경변수에서 administrator에 대한 사용자 변수에서 path 경로를 “C:\Program Files\Java\jdk-1.8\bin”로 추가하고, JAVA홈 지정하기위해서 ‘새로만들기’로 “JAVA_HOME”변수 경로는 ‘C:\Program Files\Java\jdk-1.8′(bin빼고)로 합니다.
- Path설정 : C:\Program Files\Java\jdk-1.8\bin
- JAVA_HOME : C:\Program Files\Java\jdk-1.8
정상 설치여부는 재부팅후 프롬프트 창에서 “java -version”명령으로 정상 설치 여부를 확인할수 있습니다.
pem을 jks파일로 바꾸는 방법
wowza는 pem 인증이 아닌 jks파일로 바꿔야합니다. 이를 위해 wowza-letsencrypt-converter 유틸리티를 사용하며 프로그램 다운은 https://github.com/robymus/wowza-letsencrypt-converter/releases 에서 wowza-letsencrypt-converter-0.2.jar파일을 다운받아 wowza의 환경설정 폴더에 넣어줍니다. (C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine 4.7.7\conf)
그다음 관리자권한으로 명령프롬프트를 실행해 아래 JAVA명령어를 실행해 변환합니다.
cd C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine 4.7.7\conf
java -jar wowza-letsencrypt-converter-0.2.jar -v ./ C:\Certbot\live
정상적으로 설치가 되면 jksmap.txt, domain.co.kr.jks 파일이 생성됩니다. jmsmap.txt파일을 열어보면 인증서 정보가 나오는데 password는 기본’secret’으로 설정된것을 확인할 수 있습니다.
JAVA 명령어가 위와같이 정상작동하지 않거나, 파일 생성이 되지 않을때 아래는 아래 조치방법을 참고하면 해결할 수 있습니다.
jksmap.txt 파일 실패할때
- 웹서버를 모두 중지한다. (포트 80, 443번 사용 중지)
- 1개의 기본 웹서비스를 기본값으로 등록한다.
- 프로그램 버전을 확인한다. (확인된 첨부파일 사용)
와우자 서버에 ssl 등록(port 추가)
서버메뉴에서 virtualhost setup 에서 edit누른후 아래 host Ports에서 ‘Add Host Port’를 눌러 아래과같이 SSL 포트를 추가합니다.
${com.wowza.wms.context.VHostConfigHome}/conf/www.mydomain.co.kr.jks
셋팅을 마쳤으면 wowza서버 데몬을 재시작(restart)하여 적용합니다.
재시작후 환경설정 폴더 (C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine 4.7.7\conf)에 보면 Vhost.xml 파일이 생성되는데 이를 아래 정보를 참고해 환경에 맞게 수정해줍니다.
<SSLConfig>
<KeyStorePath>C:/Program Files (x86)/Wowza Media Systems/Wowza Streaming Engine 4.7.7/conf/www.mydomain.co.kr.jks</KeyStorePath>
<KeyStorePassword>secret</KeyStorePassword>
<KeyStoreType>JKS</KeyStoreType>
<DomainToKeyStoreMapPath></DomainToKeyStoreMapPath>
<SSLProtocol>TLS</SSLProtocol>
<Algorithm>SunX509</Algorithm>
<CipherSuites></CipherSuites>
<Protocols></Protocols>
<AllowHttp2>false</AllowHttp2>
</SSLConfig>
설정을 마쳤으면 wowza 서버데몬을 다시한번 재시작해 완료합니다.
http SSL HLS 스트리밍 서비스 확인방법
다음팟플레이어나, VLC플레이어 등으로 네트워크열기에서 https://example.domain.com:1443/live/test/playlist.m3u8 로 접속해서 스트링을 확인합니다.
letsencrypt 인증서 갱신 및 .jks파일 갱신하기
letsencrypt 인증서 유효기간은 3개월입니다. windows system에서는 certbot이 작업스케줄러에서 자동으로 갱신을 해주기때문에 신경쓸 필요는 없지만 .jks파일로 변경을 해줘야하기 때문에 스케줄러에서 배치파일 추가 등록 해야합니다. java명령을 관리자권한으로 실행해야하는데 배치파일에서 관리자 권한으로 실행하기 위해 아래와 같이 작성하였습니다.
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
cd C:\Program Files (x86)\Wowza Media Systems\Wowza Streaming Engine 4.7.7\conf
java -jar wowza-letsencrypt-converter-0.2.jar -v ./ C:\Certbot\live
기타 JAVA8설치방법, 윈도우에 WOWZA SSL설치방법, certbot설치프로그램, java설치프로그램 등은 아래 첨부파일로 확인할수있으며 첨부파일을 참고해 작업합니다.