로컬 환경에서는 ws(일반 websocket)만 사용해도 문제가 없다.
하지만, 실제 배포할 때는 얘기가 약간 달라지는데 바로 SSL을 적용하는 경우가 대부분이기 때문이다.
Industry의 특성 상 보안을 요구하는 것도 있지만, 최근에는 SSL을 적용하지 않으면 위험 표시가 뜨는 등 웹 환경 자체가 이러한 사항들을 요구하는 측면도 있다.
SSL이 적용된 http를 https 로 부르는 것처럼,
SSL이 적용된 websocket은 보통 wss 로 부른다.
원래 SSL을 적용하려면, CA를 통해 certificate를 발급받는 것이 원칙이다.
하지만 현재 프로젝트에서는 그렇게 할 수 있는 환경이 아니므로, certbot을 사용해서 무료 SSL 인증서를 발급받고 turn 서버에 적용한다.
이를 위해선 아래 2가지 사항이 필요하다.
.com 등의 주소가 좋긴 하나, 유료이고 현재 단계에선 유료를 사용할 필요는 없으므로 .tk 적용 
certbot 를 사용하려면 우선 설치를 해야 한다.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
그런데 설치에서 또 에러 발생.
워낙 많은 에러가 발생해서, 순서대로 정리할 수는 없고 주요 에러를 나열했다.
1) gpg keyring error: gpg 파일이 오염된 것으로, 해당 파일 삭제
: 해당 질문 참고했다
: 추가 참고 페이지
: launchpad-getkeys는 설치하지 않음 (gpg key를 자동으로 import 해줌)
2) 더 적합한 certbot 설치 방법
: 계속 오류가 나서, 좀 더 찾아보니 ubuntu 20버전은 아래와 같이 설치하는 것이 권장된다는 것을 확인했다
: 해당 링크
sudo apt install certbot python3-certbot-nginx
참고로, ubuntu 버전은 아래와 같이 입력하면 된다.
#1번 방법
cat /etc/*release
#2번 방법
lsb -release -a
3) sudo apt update 시 계속 ppa list관련 에러 발생
: 해당 ppa list 삭제하면 된다
: 제거 명령어는 구글링
sudo rm -i /etc/apt/sources.list.d/PPA_Name.list
certbot 문서에 따르면, 인증 제공 방식에 여러 옵션이 있다.
이 중 가장 많이 사용되는 방식은 --standalone 으로 판단되어 아래와 같이 작성!
certbot이 Let's encrpyt 서버가 요청한 도메인 인증을 직접 처리한다sudo certbot certonly --standalone --preferred-challenges http \
#option: 자동 certificate 갱신
--deploy-hook "systemctl restart coturn" \
#필수 작성 사항, 사전 셋팅에서 설정한 도메인명을 넣는다
-d <YOUR_DOMAIN>
인증을 받을 동안에는 80을 열어둬야 하므로, 모든 서버를 닫는다.
#서버 연결 중단하기 (중단하지 않으면 포트넘버 80에 nginx가 listening됨)
sudo service nginx stop
sudo service coturn stop
#stop인지 active인지 확인하기
sudo service nginx status
sudo service coturn status
에러가 뜬다면 처음 turn서버 설치 시 turnserver.conf에서 domain name/realm 등의 정보가 내가 추가한 도메인명과 일치하는지 더블 체크.

이제 turn 서버에 인증서를 등록하면 된다.
#/etc/nginx/sites-available/default로 이동
sudo vi default
#default 파일 수정 (80도 -> 443으로 redirect)
server {
listen 80;
listen [::]:80;
return 301 https://<DOMAIN>$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/<DOMAIN>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<DOMAIN>/privkey.pem;
}
마지막으로 turnserver.conf에 가서 아래 내용을 추가해준다.
# SSL certificates
cert=/etc/letsencrypt/live/<DOMAIN>/fullchain.pem
pkey=/etc/letsencrypt/live/<DOMAIN>/privkey.pem
# 443 for TURN over TLS, which can bypass firewalls
tls-listening-port=443
SSL 적용 전, nginx start한 캡처 이미지다.


만약 에러가 계속 난다면, 역시 마찬가지로 아래 내용들을 다시 살펴보는 것이 좋다.
turnserver.conf 내용 (EC2 IP주소, 도메인명 등) 참고 자료
ws, wss (주소가 너무 길어 링크 처리함)
https://gabrieltanner.org/blog/turn-server
https://velog.io/@moonyoung/HTTPS-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
https://hue9010.github.io/aws/nginx%EB%A5%BC-%EC%A0%81%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%9E%90/