Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

타 사용자 접속시 NET :: ERR_CERT_AUTHORITY_INVALID #139

Closed
hanjo8813 opened this issue May 29, 2021 · 2 comments
Closed

타 사용자 접속시 NET :: ERR_CERT_AUTHORITY_INVALID #139

hanjo8813 opened this issue May 29, 2021 · 2 comments
Labels
bug 버그를 발견했을 때 Environment 환경설정 관련

Comments

@hanjo8813
Copy link
Member

hanjo8813 commented May 29, 2021

  • 현재 https 를 위해 적용한 인증서는 fake key를 사용해 임시방편으로 적용한 인증서임

  • 이 인증서로 접속하면 주소창에 경고 문구가 나오게 됨.

image

  • 지금까지 테스트한 브라우저에서는 이 가짜 https도 받아줬지만, 사용자의 브라우저마다 보안상태가 달라 에러발생 가능성 있음

https 적용이 되지않아 https 백엔드 서버로 요청이 전송되지 않는다

image

  • 이를 해결하기 위해선 프론트엔드 배포시 유효한 SSL 인증서를 적용시켜줘야함
@hanjo8813 hanjo8813 added bug 버그를 발견했을 때 Frontend 프론트엔드 관련 Environment 환경설정 관련 and removed Frontend 프론트엔드 관련 labels May 29, 2021
@hanjo8813
Copy link
Member Author

  • Netlify에서 배포하고 유효한 https 적용해도 똑같은 오류 발생..
  • 백엔드에 적용된 인증서가 신뢰할 수 없는 인증서라서 그런듯.
  • 따라서 백엔드 서버 둘다 https 를 새롭게 적용 필요

@hanjo8813
Copy link
Member Author

hanjo8813 commented Jun 7, 2021

목표는 무료로 인증서 발급 -> 각 서버에 적용

시도 1

  • OpenSSL 을 로컬에 다운로드 받아서 커스텀 인증서를 생성해보았으나.... 신뢰할 수 없는 인증서만 받을 수 있었음
  • 신뢰할수 있는 기관에서 인증한 인증서만 유효하다는 것을 알게됨
  • 게다가 유효한 인증서 받으려면 도메인이 필요했음

시도 2

  • 그래서 freenom 사이트에서 백엔드용 도메인을 발급받았음 -> flog-api
  • 이 도메인을 가지고 인증서를 받으려면 ubuntu 서버에서 certbot을 사용해 받아야하는데, 일단 nginx로 도메인과 ec2 IP를 매핑시켜줘야 했음
  • 그래서 일단 도메인 사이트에서 A 레코드에 ec2 서버 IP를 가리키게 하고, nginx에서 이를 받도록 설정해줌
  • 하지만 도메인 하나에 두개의 포트를 연결시켜주는건 http에서나 가능하고 https 는 프록시 적용이 안됐음 - -;
  • 어차피 도메인 공짜니까 그냥 flog-express , flog-flask로 도메인 두개를 발급받음
  • 이 도메인을 일단 80포트에 연결시켜놓고 certbot 한테 가서 연결시켜놨으니까 인증서 주세요~ 하니까 !!!!! 바로 발급됨
  • 발급받은 도메인을 nginx에 적용시켜줌 (정말 기본 세팅만해줌)
server {
         listen 443 ssl;
        server_name flog-flask.tk;

        ssl_certificate /etc/letsencrypt/live/flog-flask.tk/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/flog-flask.tk/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        location / {
                include proxy_params;
                proxy_pass http://127.0.0.1:5000;
        }
}
  • 이렇게 적용시켜놓고 브라우저에 접속하니 자물쇠가 매우 잘뜸 (뿌듯)

문제 발생

  • 이제 배포 리액트에서 모든 rest api 주소를 도메인 주소로 바꾸니 통신이 잘 되는가 싶었는데...
  • 갑자기 실시간 감정분석하는 flask 소켓 서버에서 CORS 에러가 발생함.
  • 분명 CORS 설정은 다 해줬으니 이상해서 분석해보니... 음성을 길게 말해서 전송할때만 에러가 발생.
  • 대체 뭐가 문제인가 싶어서 axios timeout 설정도 여유롭게 줘보고 삽질 하다가 nginx에서 전송파일 크기 제한이 있다는 것을 알게됨.
  • 바로 nginx.conf 열어서 파일 크기 제한을 넉넉하게 100MB로 늘려버리니까 잘됨

이거한다고 너무 고생해서 다신 보고싶지 않다 https................ 다음엔 그냥 돈주고 적용하자

@hanjo8813 hanjo8813 pinned this issue Jun 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 버그를 발견했을 때 Environment 환경설정 관련
Projects
None yet
Development

No branches or pull requests

1 participant