https / SSL
적용하는 방법은 복잡하진 않다. 근데 인터넷에 레퍼런스가 너무 많아서 어떤 걸 참고해야 할 지 고르는게 어려웠다. 레퍼런스 선정에 도움을 주신 해인님께 감사의 뜻을 전한다.
참고한 블로그는 다음과 같다.
[ubuntu]nginx let's encrypt로 https적용
happylulurara.tistory.com/146 가비아 도메인 적용 EC2 ubuntu 가비아나 다른 사이트를 통해 도메인을 적용하도록 한다. 일단 '가비아'를 검색해서 사이트로 들어갔다. 가비아로 들어가서 원하는 도메인 이
happylulurara.tistory.com
그럼이제출발
1. 도메인 구매
- 나같은 경우 이전에 가비아에서 구매한 500원짜리 도메인이 있었기 때문에 이 도메인을 활용했다.
웹을 넘어 클라우드로. 가비아
그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브
www.gabia.com
2. 도메인과 호스트 연결
- 나는 AWS EC2 환경에서 작업을 했기 때문에, EC2의 IP를 연결해주었다.
이렇게 하면 도메인 연결은 끝이다.
3. 우분투 환경에 인증서 생성
- https를 사용하기 위해서는 인증서가 필요하다. 나는 letsencrypt를 사용했다. 인증서는 일반적으로 발급받아 사용하려고 하면 돈이 든다. 게다가 꽤나 비싸다. 하지만 https 보급을 위해 투자를 받아 운영되는 letsencrypt는 인증서를 무료로 발급해준다. 반가운 일이다. 아무튼 이걸 쓰는법을 이제 알려주도록 하겠다.
우분투에 따라 치면 된다.
참고로, nginx 설치가 이미 완료 되어있다는 전제 하에 진행되기 때문에 nginx 세팅을 마치고 따라하면 되겠다.
sudo apt-get update
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get install python-certbot-nginx
위 명령어는 letsencrypt 인증서 발급을 위한 무료 오픈소스 도구인 certbot을 다운로드 하는 과정이다.
설치가 끝나면 계속 따라오면 된다.
sudo certbot certonly --nginx -d [구매한 도메인 주소]
정상적으로 도메인이 적용되어 있는 상태일 경우,
Congratulations! Your certificate
chain have been saved at:
/etc/letsencrypt/live/[도메인주소]/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/[도메인주소]/privkey.pem
다음의 메세지가 포함된 장문의 메세지가 출력될 것이다. 해당 경로로 이동해보면 위에 적혀있는 파일이 존재하는 것을 확인할 수 있다.
4. nginx 설정
sudo vi /etc/nginx/sites-available/default
nginx 설정을 해 줄 차례다. 추가해 줄 내용은 다음과 같다.
server {
# listen 80 default_server; # 1
# listen [::]:80 default_server;
# SSL configuration
#
listen 443 ssl default_server; # 2
listen [::]:443 ssl default_server;
ssl on; # 3
ssl_certificate /etc/letsencrypt/live/[도메인 주소]/fullchain.pem; # 4
ssl_certificate_key /etc/letsencrypt/live/[도메인 주소]/privkey.pem; # 5
...
# 1. 기본값인 listen 80 ... 를 주석처리 해 주고,
# 2. 주석 처리 되어있던 listen 443 ... 를 주석 해제해준다.
# 3. ssl on; 을 작성해준다. 세미콜론 빼먹지 말자.
# 4. ssl_certificate [fullchain.pem 파일이 존재하는 경로]; 를 작성해준다. 세미콜론 빼먹지 말자2.
# 5. ssl_certificate_key [privkey.pem 파일이 존재하는 경로]; 를 작성해준다. 세미콜론 빼먹지 말자3.
작성 했다면 ESC를 누른 뒤 :wq! 를 입력하여 저장하면서 빠져나온다.
이후 nginx service를 재부팅한다.
sudo service nginx restart
여기까지 하면 이제부터 https 통신이 가능해진다. 놀라울 정도로 단순하고 step by step으로 진행할 수 있도록 구성되어 있다. 머리 좋은 사람들이 만든 기술은 역시 적용도 쉽다.
참고로 EC2 환경이라면 보안 그룹의 인바운드 규칙에서 HTTPS 포트(443)를 개방한 상태여야 한다. https 적용하려는 사람이라면 이 정도는 할 줄 알고 있을 것이라 믿고 어떻게 설정하는지에 대한 방법은 따로 적지 않겠다.
추가로, letsencrypt의 단점을 잠깐 이야기 하자면,
1. 와일드카드 형식의 인증서(Wildcard SSL)를 지원하지 않는다. 와일드 카드 인증서가 무엇인가에 대해 네이버로 예를 들어보자면,
www.naver.com / cafe.naver.com / blog.naver.com
위와 같이 네이버는 *.naver.com 형식을 지원하는데, 이런게 안 된다는 뜻이다. 하나의 인증서가 하나의 주소만 지원한다는 점, 명심하자.
2. 인증서는 90일 뒤에 만료된다. 주기적으로 갱신을 해줘야 하는 것이다. 꽤나 불편한 점이지만, 자동으로 갱신이 가능하도록 설정해줄 수 있기 때문에 필요하다면 설정해주면 되겠다.
sudo certbot renew --dry-run
이로써 우리는 https 오너가 되었다. 주소창 왼쪽에 자물쇠를 걸 수 있게 된 것이다.
그럼 난 간다. 이만.
'내가 배운 것들 > 기타' 카테고리의 다른 글
[Docker] Docker의 Multi-stage build (0) | 2022.04.25 |
---|---|
[면접] 면접 준비 질문들.. (0) | 2022.02.02 |
[Java] 문자열의 유사도 구하기 : 거리 알고리즘 (0) | 2022.01.18 |
[SQL] SELECT 구문 작동 순서 (0) | 2022.01.10 |
Youtube Data API v3의 검색 기능 매개변수들 (0) | 2021.12.17 |
댓글