목록전체 글 (12)
develog
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/16aG8/btrvFBa67gE/CMa73uWZMh4qhUNhprNKB1/img.jpg)
비전공자로 개발을 공부를 시작한지 딱 1년되던 달에 목표한 회사에 최종 합격했다. 어떻게 준비했고, 어떤 과정이 있었는지 남겨놓고자 한다. 웹 개발 시작과 이력서 준비까지 반도체를 전공하다 우연한 기회에 개발을 접하게 되었고, 2021년 2월부터 웹 개발에 관심이 생겨 웹 개발 공부를 시작했다. 개발 분야가 나와 너무 잘 맞았고, 재밌게 몰입하다보니 9월에 웹 개발자로 인턴십을 진행할 기회가 찾아왔다. 복잡한 기능 구현을 좋아해서, 에디터 개발에 빠져있었던 때였고 이와 딱 알맞게 구름 IDE에서 실무를 경험하게 되었다. 입사 전에 구름 IDE를 사용해보았는데, 파일 탐색기 영역에서 사용자 경험이 아쉬운 부분이 있었고 이를 꼭 개선해보고자 목표하고 입사하게 되었다. 회사에 조금 익숙해졌을 때에 팀원들에게 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/SkZp5/btrr6z285LL/Ja4MlCitIQKYAUjLbJRiv0/img.png)
이번 포스팅에선 이미 HTTP로 배포되어 있는 서버에 HTTPS를 적용시킬 것이다. 현재 도메인이 연결되어있어야한다. 1. 인증서 발급 AWS ACM에서 인증서를 발급받자. 인증서 요청 버튼을 눌러 인증서를 받으러 가보자. 퍼블릭 인증서를 선택하고 다음 버튼을 누르면 된다. 자신의 도메인을 입력하면 된다. Route53에서 생성해준 A레코드 형식대로 추가해주면 된다. 필자는 A레코드를 googoo.blog로 열어줬으므로 googoo.blog로 입력했다. 검증 방법은 DNS 검증 방법을 권장하고 있다. 빠르게 검증하고 싶다면 이메일 검증을 진행해도 무방하다. 필자는 DNS 검증 방식을 선택하겠다. 필자는 googoo.blog에 대한 인증서가 발급되었다. 인증서에 들어가서 Route 53에서 레코드 생성 버..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGn976/btrr3iU8LsM/VwDxI3IPtPj4kkkmnaA35k/img.png)
이전 포스팅에서 Node 서버를 AWS EC2에 배포하고, 이를 확인해보는 것까지 진행하였다. 이 글을 시작하기 전에, http://{자신의 IP}:{자신의 port}를 했을 때, 원하는 값이 출력되는 상태여야한다. 1. 도메인 구매 필자는 원하는 도메인이 googoo.blog이다. 가비아, AWS Route53, Google domain 등등 도메인 구매처는 많다. 필자는 그 중 googoo.blog 가격이 가장 싼 호스팅케이알을 이용했다. 구매 과정은 어느 서비스를 이용하는지에 따라 다르므로 생략하겠다. 구매까지는 어렵지 않을 것이다. 2. AWS Route53에 도메인 연결 필수적인 작업은 아니다. 각자의 도메인 사이트에서 직접 인스턴스와 연결시켜줘도 무방하다. 하지만 https를 연결시킬 때, A..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cW46hm/btrr7qeGR3M/OMt42FPNcKiox4qxit8bE0/img.png)
이 글은 2022.02.02를 기준으로 쓰인 글입니다. 필자는 MAC을 사용중입니다. 만약 EC2에 노드 서버가 이미 HTTP로 배포 되어있다면 이 파트를 건너뛰어도 된다. 여기서 설명했듯이, HTTPS를 적용하는 방법은 매우 다양하다. 필자는 이 방법들 중에서 AWS EC2, AWS Route53, AWS 로드밸런서, AWS ACM을 이용하여 HTTPS를 적용해보겠다. (이 외의 방식에 질문이 있다면 언제든 댓글로 질문해도 괜찮습니다.) Node 서버를 EC2에 배포하기 필자는 아래와 같은 Express 서버를 띄울 것이다. const express = require('express'); const app = express(); const PORT = 8080; function handleListen ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cOcE5B/btrr4xLXjnd/utlibjkgJQrB9ADFP33cO1/img.png)
당장 HTTPS를 적용하는 것이 급한 사람들에게는 적절치 않은 글이다. 적용만을 원한다면 이 글을 읽으면 된다. HTTPS를 적용하는 방식은 매우 다양하다. 어떤 것들이 있을지 간단하게 먼저 정리하면 다음과 같다. AWS 로드밸런서, AWS ACM 사용 AWS 로드밸런서, AWS ACM, Nginx 사용 Let's Encrypt, Nginx 사용 Let's Encrypt, Nodejs 사용 등등 이 외에도 굉장히 다양하다. 각각의 도구들은 각자 하는 역할이 분명하게 다르며, 그 역할을 위해 어떤 도구를 사용할지는 쓰는 사람의 자유다. 선택한 도구에 따라서 다양한 조합이 생길 수 있다. 인터넷의 대부분 글에는 처음부터 끝까지 정형화된 방식으로 HTTPS를 적용하는 것을 다룬 글이 다수다. 이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ozhHx/btrr2ShODJv/kktsVISbkJqFDbJRdzueL1/img.png)
HTTPS는 HTTP의 보안 취약점을 개선한 프로토콜이다. 일반적인 HTTP 통신 방식에서 SSL/TSL이 추가된 개념이다. SSL/TSL은 통신하는 데이터를 암호화하기 위한 프로토콜이다. 무슨 소리인지 하나도 모르겠다. 천천히 글을 따라서 읽어보면 완벽하게 이해할 수 있을 것이다. HTTP의 보안 취약점 HTTP가 어떤 보안적으로 취약했을까. 크게 세가지를 말할 수 있다. 암호화하지 않은(평문) 통신 암호화되지 않은 데이터를 주고 받기 때문에, 누군가 통신 중간에서 데이터를 가로챈다면 너무 위험했다. 아래 그림에서 위처럼 암호화되지 않은 비밀번호를 가로챈다면, 바로 내 비밀번호가 들키게 되고, 마음이 너무 아플 것이다. 하지만 암호화를 거쳐 통신하게 되면, 뺏겨도 안심이다! 어차피 암호화된 데이터를 읽..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ccTD4l/btrr2Suko3z/OeAKwuhcWBunB39trhE8TK/img.png)
HTTP의 메서드들에 대해서 알아보자. HTTP 메서드는 HTTP 동사라고도 불리며, REST한 API에서 어느걸 하고자 하는지를 담당하고 있다. GET URI가 가진 정보를 얻기 위해, 서버측에 URI에 해당하는 리소스를 달라고 요청하는데 사용한다. 보통의 경우, 요청에 특정 조건을 넣기 위해서 Path 파라미터나 Query 파라미터를 이용한다. GET api/user?age=30이런식으로 사용한다는 뜻이다. 하지만, 너무 조건이 복잡해지고 길어지게될 때, Body에 정보를 담아 보내고 싶은 욕구가 생길수도 있다. GET에 Body를 넣어도 될까? 해도 될까..? RFC 문서를 참고해보자. "The GET method means retrieve whatever information (in the for..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1DDJ2/btrr06AFT6Y/XmKizN2fCsvFi4R71H2l40/img.png)
이전 글에서 빈약했던 내용을 보충하고자 한다. HTTP에 왜 이렇게 집착하는지 궁금할 수 있다. 프론트엔드 개발자더라도, 웹의 근본인 HTTP의 굴레에서 벗어날 수 없을 뿐더러, HTTP에 대해 잘 알고 있으면 웹 성능 최적화에도 도움이 될 수 있다. 조금만 더 공부하면 HTTP를 손바닥 안에 두고 쉽게 가지고 놀 수 있다. 이번엔 순차적으로 짚어보고자 한다. 내용이 많이 길수도 있다. 하지만 이 문서만 다 이해하면 HTTP에 대해서는 빠삭해질 수 있도록 글을 구성해 보았다. 아직 HTTP 간단하게 설명한 글을 이해하지 못했다면, 추후에 읽는 것을 추천한다. HTTP/0.9 0.9란 버전은 사실 나중에 지어진 것이고, 처음 나왔을 땐 그냥 나왔다. 이 때엔 상태코드나 Header 같은건 전혀 없고 단순히..