Pay it Forward

NodeJS로 배포한 서비스에 SSL 인증서 취득하기 본문

Server/NodeJS

NodeJS로 배포한 서비스에 SSL 인증서 취득하기

minjoony 2020. 3. 22. 14:08
728x90

보안적인 이슈가 많은 근래 앱스토어에서도 SSL을 필수로 취득하도록 하며

 

https 통신은 의무가 되어가고 있습니다

 

이 게시물에서는 AWS의 EC2 인스턴스에 NodeJS로 만든 프로젝트를

 

SSL을 취득하여 https 통신을 가능하게 만드는 과정을 정리해 보고자 합니다

 

순서

1. 도메인 준비

2. Route53을 이용하여 도메인과 EC2 인스턴스 연결

3. nginx를 사용하여 NodeJS를 80번 포트에서 접근가능하도록 열어주기

4. nginx에서 도메인 - IP address 연결하기

5. ACM을 통해서 SSL 취득하기

6. 취득한 SSL을 사용해 ELB생성 및 Route53 수정하기

 

위의 과정에서 1~4번 과정을 마치면 Nodejs를 도메인을 사용하여 통신 가능하며

 

나머지 5~6번 과정을 추가로 마치면 https 통신이 가능합니다

 

하는 과정에서 실수를 할 수 있기 때문에 한번에 https 통신을 하기 보다는

 

http 통신을 먼저 마친후에 https 통신을 하는 것을 권장드립니다

 

도메인 준비 및 EC2와 연결하기

도메인과 서버(EC2) 연결하기

 

[AWS] 도메인과 서버(EC2) 연결하기

서비스를 배포하기 위해서는 도메인이 필수입니다 도메인을 통해 IP로는 나타낼 수 없는 자신의 서비스에 대한 아이덴티티를 도메인을 통해 나타내는 것은 물론 사용자들도 편하게 서비스에 접근할 수 있습니다 이..

artiiicy.tistory.com

참고로 EC2를 도메인과 연결하려면 탄력적IP할당이 필수적이며

 

NodeJS서비스를 도메인에 연결하여 가동시키기 위해서는 pm2 모듈을 사용하시는 것을 추천드립니다

탄력적IP로 고정 IP만들기

AWS EC2에 서버 올리기 (using pm2)

nginx를 사용하여 도메인 - NodeJS 연결하기

우선 nginx를 설치합니다

sudo apt-get update
sudo apt-get install nginx

설치 후에 자신의 도메인으로 접속하였을 때

 

다음과 같이 nginx가 반겨주면 성공한 것입니다 :D

만약 위와 같은 화면이 뜨지 않는다면 nginx를 실행해주세요

sudo service ngnix start

 

nginx가 정상적으로 작동한다면 프록시 설정을 위해 디렉토리를 이동합니다

cd /etc/nginx/sites-available

sites-available 은 프록시 설정을 설정하는 디렉토리 입니다

 

sites-available 안에 node-server라는 파일을 다음과 같이 작성합니다

sudo vi node-server
server {
	listen 80;
    server_name example.com www.example.com;
    location / {
        proxy_set_header Host $http_host;
    	proxy_pass http://탄력적IP address:3000;
        proxy_http_version 1.1;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

이는 server_name에 적힌 경로로 클라이언트의 요청이 오면

 

proxy_pass에 적힌 경로, 즉 탄력적IP에 할당된 EC2의 인스턴스로 요청을 전달해 준다는 의미입니다

 

이제 새로 만든 node-server 파일을 /etc/nginx/sites-enabled 에 연결해줍니다

sudo ln -s /etc/nginx/sites-available/node-server /etc/nginx/sites-enabled/

모든 설정이 끝났습니다! nginx를 재시작합니다

sudo service nginx restart

준비한 도메인으로 접속하면 nodejs로 연결되어 잘 작동하는 것을 확인하실 수 있습니다

ACM을 통해서 SSL 취득하기

ACM을 이용하여 SSL 취득하기

 

[AWS] ACM을 이용하여 SSL 취득하기

SSL 이란? 보안은 중요하다고 하지만 쉽게 무시되는 경우가 많습니다 SSL역시 굳이 해야하나 라고 생각할 수 있으나 2012년부터 법으로 회원가입을 받는 모든 사이트에 대해서 SSL 보안을 의무적으로 실시해야한다..

artiiicy.tistory.com

SSL 사용하여 ELB 생성 및 Route53 수정하기

로드밸런서(ELB) 생성하기

 

 

위 과정을 모두 마치면 소중한 자물쇠 취득과 함께 SSL을 통한 HTTPS 통신이 가능하게 됩니다! :D

 

728x90
Comments