이제 구글 WebRTC 예제(step 5)에 기능을 추가하려고 한다.
- SSL 적용
- 서버 기능 보강
- 오디오 추가
- 디자인 수정
- 참가자 수 2명->5명 증가 (이 부분은 프로젝트에서 필요한 기능이라 추가)
1. SSL 적용
NodeJS에 SSL을 적용하기 위해, SSL을 생성한다.
(사실 온라인 마피아 프로젝트를 원활히 서비스하려면 OpenSSL로 충분한지 잘 모르겠다.. )
OpenSSL로 개인키(private.pem) 파일을 생성한다.
openssl genrsa 1024 > private.pem
* 여기서 'unable to write 'random state' 에러가 발생하면 windows의 경우 관리자 권한으로 실행해줘야 한다. 나는 현재 windows powershell를 관리자 권한으로 켜는 코드를 실행했다.
개인키와 쌍이 되는 공개키(public.pem) 파일을 생성한다.
openssl req -x509 -new -key private.pem > public.pem
.... 근데 여기부터 참고한 티스토리 글과 다르게 흘러가기 시작했다.
계속 Private Key가 로드되지 않는다는데 서치해보니 다양한 상황의 각종 원인이 나와서 울고싶어졌다. 나는 OpenSSL로 WebRTC 서비스를 원활하게 하고 싶을 뿐인데 뭘 해야 하는걸까...!
* SSL/TLS?
SSL에 대해 개념이 전무한 상태로 코딩을 하려니까 죽겠어서 보안기사 책을 펼쳐봤더니 마침 SSL/TLS 내용이 있어서 정리해본다.
통신내용을 암호화해주는 프로토콜로 SSL 혹은 TLS를 이용한다. SSL/TLS 상에 HTTP를 올린다. 프로토콜의 이중 구조를 통해 HTTP의 통신은 암호화되어 도청을 방지할 수 있다. SSL/TLS로 통신을 수행할 때의 URL은 http://가 아니고 https://로 시작된다.
SSL/TLS 보안 서비스
1. 기밀성 서비스 : DES, RC4와 같은 대칭키 암호화 알고리즘을 사용하여 제공되며, 이때 사용되는 비밀키는 Handshake Protocol을 통해 생성된다.
2. 클라이언트와 서버 상호 인증 : 연결 설정 과정에서 서로 간에 신뢰할 수 있도록 인증을 사용하는데, 인증에는 RSA와 같은 비대칭키 암호 알고리즘, DSS와 같은 전자서명 알고리즘와 X.509 공개키 인증서가 사용된다.
3. 메시지 무결성 서비스 : 안전한 해시 알고리즘을 사용해서 메시지 인증코드를 만들어 메시지에 포함시키기 때문에 신뢰성 있는 통신이 가능하다.
그니까 저 예제에서 말하는 거는 X.509 공개키 인증서를 쓰는거니까 SSL/TLP 서비스 중 2. 클라이언트와 서버 상호 인증 서비스를 사용하는 거겠지? (확실하지 않다)
7시간 안에 해결해야되는 프로젝트 과제가 있어서 우선 OpenSSL 삽질은 접어두고 aws s3에 정적 웹페이지부터 올려봐야겠다. ec2로 동적 웹페이지 호스팅은 어떻게 하는지 아직도 감이 잘 안 잡힌다.
'개발 프로젝트 > 온라인 마피아' 카테고리의 다른 글
WebRTC - https, SSL (4) (0) | 2020.10.02 |
---|---|
WebRTC - AWS 호스팅하기 (3) (0) | 2020.10.02 |
WebRTC - 기초부터 차근차근 (1) (0) | 2020.10.02 |