https : Let's Encrypt 적용하기

wook2·2022년 7월 19일
0
post-thumbnail
post-custom-banner

https

웹 통신 프로토콜인 http 방식에 ssl(secure sockets layer)를 통해 암호화된 방식으로 서버와 클라이언트가 정보를 주고받을 수 있다.

SSL 디지털 인증서

SSL 인증서의 역할은 크게 두가지가 있다.

  • 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버임을 보장한다.
  • SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.

SSL이 작동하는 방식


어떻게 안전하게 정보를 전달할 것인가

만약 클라이언트가 서버에 어떤 정보를 요청해 응답을 받아왔다고 가정해보자. 이러한 상황에서 클라이언트는 어떻게 정보가 조작되지 않았고 내가 요청한 서버로부터 응답이 왔다고 확신할 수 있을까?
서버는 이를 위해 인증서를 보내 클라이언트에게 내가 누구인지 확인하는 정보를 보여준다. 그러면 드는 의문에는 그럼 그 인증서는 올바른 인증서인가에 대한 의문이 들기 시작한다.
즉 인증서를 통해 신뢰할 수 있는 서버인가를 확인하는데 그 신뢰는 어떻게 검증을 할 것이냐는 것이다.

Root CA

그 인증서의 검증을 하기 위한 몇몇 기관들이 존재하는데, 이를 Root CA라고 부른다. 이런 기관에는 Verisign, Geotrust등이 있다.
이러한 RootCA에서는 본인들의 비밀키를 바탕으로 정보를 암호화 한다. 그리고 클라이언트는 이 정보를 RootCA에서 제공한 공개키를 통해 복호화하여 해당 정보를 RootCA가 암호화를 했구나라고 확인할 수 있다.
이러한 RootCA를 바탕으로 하위 기관들은 RootCA에서 검증된 인증서를 만들 수 있다. 하위 기관에서 RootCA의 비밀키로 암호화하여 인증서를 만들면, 해당 인증서는 공개키를 통해 검증될 수 있고, RootCA의 공개키로 검증할 수 있다는 사실은 하위 기관이 RootCA로부터 검증을 받은것이니 믿고 써도 된다는 의미가 된다.

자세한 정보는 https://m.blog.naver.com/alice_k106/221468341565 여기를 방문하자.


Let's Encrypt

let's encrypt는 사용자에게 무료로 인증서를 발급해주는 비영리기관이다. let's encrypt는 certbot이라는 것을 제공해 쉽게 인증서를 만들 수 있게 해준다.

Certbot 설치

$ sudo apt update
$ sudo apt upgrade
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt install python3-certbot-nginx

도메인 이름 설정하기

$ sudo vim /etc/nginx/sites-available/default

server name 에 여러개의 도메인을 넣으면 해당 도메인으로 오는 요청을 모두 받겠다는 뜻이다.

SSL 인증서 다운받기

$ sudo certbot --nginx -d wook2.xyz -d www.wook2.xyz

인증서를 다운 받으면 이메일을 입력해야만 한다고 하는데, 이메일을 입력하고 약관 동의 후, 메일을 받을것인가를 입력해주자.

아래와 같은 에러가 났는데, 잘 읽어보면 wook2.xyz에 대해 A 레코드가 없다고 알려준다. 그렇기 때문에 aws route53으로 넘어가 wook2.xyz A레코드를 생성해주었다.

A레코드 wook2.xyz를 생성해 주었다.

다시 명령어를 입력했는데, 아래와 같이 htttp 요청에 대해 https로 redirect 할지를 선택하라고 알려준다.
1번은 서버 configure 변경없이 http요청 받고 그대로 쓰는 것 이고, 2번은 http 요청에 대해 https로 돌려보내준다.
2번을 클릭하겠다.

적용이 잘 되었고, 키파일의 위치와 인증서 만료기간 날짜와 연장시키기 위해서는 어떻게 해야하는지 알려주고 있다.


SSL 서버 테스팅하기

서버를 테스팅하기 전에 보안그룹 인바운드 규칙에서 Https 요청을 열어주어야 한다.

인증서 자동 갱신 확인

Let's Encrypt 인증서는 90일동안만 유효하므로 90일지 지나면 갱신시켜주어야 한다. let's encrypt에서 설치시 자동으로 갱신해주는 커맨드도 같이 설치되는데, 갱신이 잘 되는지 확인하려면 다음 명령어를 실행하면 된다.

sudo certbot renew --dry-run

참고자료)
생활코딩 : https://opentutorials.org/course/228/4894
ssl 작동방식: https://m.blog.naver.com/alice_k106/221468341565

profile
꾸준히 공부하자
post-custom-banner

0개의 댓글