자 웹사이트는 발급 받았으니 한 번 연결시켜볼까? 라고 생각했다.
우리가 만든 앱에서는 로그인을 간편화 시키고자 Google OAuth2를 사용했다.
Google OAuth2
Google OAuth2란?
https://cloud.google.com/apigee/docs/api-platform/security/oauth/oauth-home?hl=ko
구글은 한국어 문서도 잘 만들어 놓았구나.
말 그대로 "Log in with Google"을 누르면 내 구글 계정으로 웹사이트에 접근을 허용하는 방식이다.
우리 웹 사이트에서 작동하는 예를 들면
이렇게 구글에서 "어떤 계정으로 접속할래?"를 물어본다
그렇게 클릭해서 다시 우리 웹사이트에 돌아오면 이렇게 정보를 얻을 수 있다.
Google Credentials
dear-diary는 내가 지난 학기에 쓴 프로젝트 이름이다.
credential 돌려막기라고 볼 수 있달까....
https://console.cloud.google.com/
내 웹사이트에서 "구글 로그인 쓸거야!"라고 하면 내 서버에서 google Credential 정보를 필요로 한다.
보다시피 작년에 생성한 프로젝트 이름이 dear-diary라서 로그인 때 저 이름이 뜬거다.
Credential Key 나 ID가 자세히 있는 페이지를 들어가보면,
정상적으로 로그인이 되고 나면 그 다음에 어디갈건데?를 정하는 것이 Authorized JavaScript origins 즉, 우리 웹사이트로 다시 돌아올 경로를 지정해줘야한다.
근데 여기서 이제 우리가 AWS에 배포를했다면 AWS에서 제공하는 ip를 넣어서 테스트 해보고 싶었다.
하지만 이렇게 보다시피 `top-level domain`을 넣으라고 오류를 뱉어낸다.
로컬 환경 테스트를 위한 localhost 정도만 허용해주고 나머지 ip는 절대 안된다고 한다.
그래도 난 발급받은 도메인이 있지!
하지만 그것도 빠꾸를 먹는다. https:// 만허용이 된단다.
여기서 이제 security 개념이 나오기 시작한다.
HTTPS와 SSL/TLS
HTTP vs HTTPS
HTTP requests and responses are sent in plaintext, which means that anyone can read them. HTTPS corrects this problem by using TLS/SSL encryption.
HTTP 요청과 응답은 일반 텍스트로 전송되므로 누구나 읽을 수 있습니다. HTTPS에서는 TLS/SSL 암호화를 사용하여 이 문제를 해결합니다.
https://www.cloudflare.com/learning/ssl/why-is-http-not-secure/
이제서야 알게되었는데 cloudflare에서도 한국어를 지원한다. 굉장한 자료가 되겠군요?!
교수님이 계속 i18n 구현하라고 압박을 주시는데 또 한 번 이렇게 i18n의 중요성을 깨닫습니다...
아마 이번 프로젝트에서 되게 든든한 친구가 될 것 같은 웹사이트다.
자, 또 그럼 여기서, TLS/SSL encryption이 뭔데? 라는 질문으로 이어진다.
What is an SSL certificate?
An SSL certificate displays important information for verifying the owner of a website and encrypting web traffic with SSL/TLS, including the public key, the issuer of the certificate, and the associated subdomains.
SSL 인증서에는 공개 키, 인증서 발급자, 관련 하위 도메인 등 웹 사이트 소유자를 확인하고 SSL/TLS로 웹 트래픽을 암호화하는 데 필요한 중요한 정보가 표시됩니다.
https://www.cloudflare.com/learning/ssl/what-is-an-ssl-certificate
아니 하도 중요한 얘기가 많아서 긁어 오기를 포기한다. 그냥 읽어보시길 추천
그러니까, 구글에서는 저런식으로 "안전한" 사이트 만을 등록하라고 안내를 하는 것이고, 나는 내 웹 사이트를 안전하게 구축해야할 의무가 있는 것이다. SSL 인증서 발급은 내가 이용한 name.com에서도 제공하고 있어서 그 안에서 SSL certificate을 발급 받을 수 있다. 그래 그럼 SSL은 얼추 알겠으니 그걸 발급받으러 가보자.
SSL Certificate 발급
SSL Certificate에서 볼 수 있든 웹 호스팅 업체인 name.com에서도 SSL certificate 발급이 가능하며 여전히 student pack 안이라 공짜다.
이걸 발급 받기 위해서는 또 CSR이라는게 필요했다.
CSR이란?
Generate a Certificate Signing Request (CSR) to get a custom certificate from the Certificate Authority (CA) of your choice while maintaining control of the private key on Cloudflare.
그러니까 인증 기관가서 웹사이트 정보 얻으려면 나의 웹사이트나 기관 정보 등등을 담은 CSR이 필요로 하니 그걸 생성해서 제출하라는 거다. 이것은 또 어떻게 만드는 것인고... 하다가 그냥
여기서 간단하게 만들었다.
생성된 CSR을 제출하고 SSL 발급을 계속 진행하면 된다.
** 이때 Certificate 와 Private Key가 발급되는데 꼭!!!! 따로 저장해둬야 한다 **
내가 입력한 정보대로 암호가 잘 생성된 걸 확인할 수 있다.
(SSL Certificate 발급 이어서)
다시 name.com으로 돌아와 CSR을 넣어주고 시간이 꽤(한 10분?) 지나면
요런 이메일이 날라온다.
내 웹사이트는 TLS Certificate를 받았군요? 이때까지 SSL Certificate라고 잔뜩 써놨는데 뭐... 그게 그거니까~
TLS와 SSL의 차이는 AWS에게 설명을 부탁해본다.
그렇게 정상적으로 발급된 것을 확인하고 다시 name.com으로 들어가보면,
이렇게 생성된 것을 확인할 수있다.
Show Certificate를 클릭하면 웬 암호같은게 잔뜩 있다.
크게 두 가지로 나뉘는데, 하나는 Server Certificate 이고 다른 하나는 CA Certificate이 있다.
근데 계속 웹사이트에 저렇게 "Verify your nameservers"라고 떠서 GO TO NAMESERVERS를 클릭해서
Use Default Nameservers를 누르고 활성화 시켰다.
그러고도 계속 저 메세지가 가시질 않아서 고객센터에 문의해봤더니 이미 name.com의 nameservers를 사용하고 있으니 무시해도 좋다는 답변을 받았다.
그렇다면 여기서,
Nameservers는 또 뭔가?
그러니 내가 알았던 바는
google.com 을 브라우저에 입력을 하면 8.8.8.8 로 가는 줄 알았는데 사실은 그 사이에 뭔가 더 있었던 것이다.
나 같이 헷갈려 하는 사람들이 꽤 있나 보군.
그러니까, 내가 name.com에서 만든 helloworld.com은 DNS를 통해서 ip를 갖고오는데 아마 그 ip는 name.com 관련 ip일 것이고, 그ip를 갖고서 TLD(최상위 도메인) 네임 서버에 요청을 보내면 name.com에서 내 helloworld.com을 찾아서 https 요청을 하는 것 같아 보인다.
아니면... 너무 복잡하니 요정도로만 간단하게 이해하고 넘어가는 걸로 ~
휴... 그렇게 나는 정상적으로 나의 웹 사이트를 Google Credentials에 등록시킬 수 있었다!
그래서 사이트 접속이 되냐고?
아직이다, 왜냐면 AWS에 정상배포가 되지 않았거든~!
'CS 라이프' 카테고리의 다른 글
[SDLC] AWS CloudFront + S3 배포하기 (0) | 2024.05.10 |
---|---|
AI 홍수 속을 살아가는 비루한 대학원생 (feat. ChatGPT, Copilot) (0) | 2024.05.10 |
[SDLC] GitHub Student Pack으로 무료 도메인 얻기 (2) | 2024.04.25 |
이번에도 힘들었던 인턴십 구하기 여정 - 합격 & 그 후 (2) | 2024.03.22 |
이번에도 힘들었던 인턴십 구하기 여정 - 합격 전 (1) | 2024.03.22 |