SSL 인증서와 NGINX - boostcampwm-2022/web30-TODY GitHub Wiki
SSL 인증서와 NGINX
💡 사설 SSL 인증서 사용으로 발생한 오류를 해결하기 위해 공인 SSL 인증서를 발급해 적용했습니다. 동시에 HTTPS 적용에 관한 로직은 NGINX가 모두 위임하도록 개선했습니다.
트러블슈팅 과정
wss 요청 시 SSL 인증서 오류 발생
- 에러
- wss://[백엔드배포ip:소켓서버포트] 요청 시
NET::ERR_CERT_AUTHORITY_INVALID
- https://[백엔드배포ip:api서버포트] 요청 시 ssl 인증서 verification fail
- wss://[백엔드배포ip:소켓서버포트] 요청 시
원인 분석
-
추정 원인 : 백엔드 서버에서 self-signed 인증서 사용 (OpenSSL 소프트웨어)
If the certificate you are using is self-signed, browsers will not be able to check its validity. This means that they will treat it as non valid SSL certificate and will display an ERR_CERT_AUTHORITY_INVALID error warning the users trying to access your site.
You’re using a self-signed SSL certificate. Using a self-signed certificate can save you money, but since browsers can’t verify its validity, your visitors may run into the error in question. Browser warnings can scare a lot of users away, so we recommend against this approach.
해결
- 백엔드 도메인 발급 및 적용
- 공인 CA(인증서 발급 기관 ex.Let’s Encrypt)를 통해 백엔드 도메인에 대한 ssl 인증서 발급
- 공인 CA인 Let’s Encrypt에서는 무료로 SSL 인증서를 발급해줄 뿐만 아니라, NGINX 자동 설정 기능이 있는 클라이언트를 제공한다.
- NGINX를 통한 ssl 설정
- NGINX를 프록시 서버로 두고 ssl 인증 관련 작업을 위임하기로 하였다.
- NGINX의 역할
- redirection(80→443)
- 포트포워딩(443→5000,8000)
- ssl 인증서 적용