Let’s Encrypt – ACMEv1에서 ACMEv2로 변경하기

학습목표

  • Let’s Encrypt – ACMEv1에서 ACMEv2로 변경하기

Let’s Encrypt에서는 ACMEv1을 2020년 6월 1일부터 중지할것이라는 메일을 보내왔다.
올해 초부터 메일이 왔지만, 잠시 서버쪽 셋팅을 멈추고 있었기 때문에(귀찮았던건 아니…) 무시하고 있었는데.
다음달부터 당장 안된다니.. 미루어놓았던 일을 해치워야 겠다.

주식으로 잃은 돈을 노력으로 얻기 위해서 다시 열심히 학습과 경제적 자유에 대한 열망으로 다시 손을 대기 시작했다.

각설하고 본론으로
Let’s Encrypt에서는 ACMEv1에서 ACMEv2로 변경하기 위한 가이드문서를 읽어보았다.
가이드 문서를 좀 읽어보니, ACME 클라이언트 구현을 위해서 Certbot을 추천하더라.
잘 모르면 추천받는걸로 작업하는게 인지상정.

ACMEv2의 장점 : (star)*인증서를 발급
기본적으로 certbot의 경우 실행시 자동으로 업데이트를 한다.
api주소만 단순히 ACMEv2를 사용하면 동일하게 사용할수 있다.

글로 배운데로 해보려 했지만, 실패

글로 배운 결론은 renewal 폴더 안의 conf 파일의 기존 ACMEv1 주소를 ACMEv2로 변경하면 정상 갱신이 가능하다고 한다.

글로 배운데로 해보려고 하는데, 왜 내 conf파일은 v2로 이미 갱신되어 있냐는 말인가??
server = https://acme-v02.api.letsencrypt.org/directory 로 이미 변경이 되어 있는 상태였다.

유연하게 해결해 나가기

이제 차선책으로 업데이트 전 인증서 상태를 확인해보고, 업데이트 후 인증서가 잘 변경되는지를 확인해보자.

lets encrypt 버전 확인

letsencrypt --version
certbot 0.27.0

인증서 확인 (root로 확인)
root@:~# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
이하 생략

현재 인증서 정보 확인

openssl x509 -noout -text -in /etc/letsencrypt/live/magpiebros.com/fullchain.pem 

ACME 버전 정보 확인은 할수 없었음. 

그래서 그냥 업데이트 하기로 함… ㅠ
뭐 아직 인증서 기간이 남아서 안된다고?

인증서 취소 삭제 다시 설치를 해야 하나….
기간 만료되거나 사용불가면 다시 되겠지라는 마음으로 일단 접는다.

만료되는 6월 다시 확인해보고 조치내용을 공유 예정.

// 인증서 취소 & 삭제
certbot-auto reboke —cert-path /etc/letsencrypt/renewal/www.magpiebros.com.conf
certbot-auto delete —cert-path /etc/letsencrypt/renewal/www.magpiebros.com.conf

crontab -e
min hour1/hour2 * * * /home/../certbot-auto renew —renew-hook “sudo /opt/…/ctlscript.sh restart apache”

SSL인증서 적용하기(03) – Let’s Encrypt Ubuntu 자동 갱신


글 정리중.

학습목표

  1. 3개월 단위로 재갱신을 해야 하는 SSL 인증서를 자동으로 갱신되게 구성한다.
  2. 자동으로 구동은 cron/crontab을 사용

crontab 스케쥴 확인

crontab에 설정되어 있는 스케쥴이 있는지 확인해보자.

# crontab -l
-su: crontab: command not found

현재 crontab 명령어를 실행해보면 없는 명령어라고 한다. crontab을 설치부터 해야할것 같다.

crontab 설치

# apt-get install -y cron

설치 완료후 확인
# crontab -l
no crontab for root

이제 cron 설치는 끝났다. 간단하게 cron에 대해서 학습하고 넘어가자.

crontab 기본 명령어와 설명

사실 우리는 cron을 설치했다. crontab을 설치하지 않았다는거다.
일반적인 개발자들은 crontab으로 스케쥴 관리를 한다고 말하곤 한다. cron은 뭐고 crontab은 뭐야??!

우리가 설치한 cron은 스케쥴러 데몬이고, crontab은 cron 데몬이 사용할 일정리스트라고 인지하면 쉽게 이해가 갈것이라고 생각한다.
cron 데몬은 crontab에 적혀있는 일정을 기억하고 있다가, 적혀있는 일정에 맞춰서 명령어를 수행해준다.

이제 명령어를 살펴보자.

작업스케쥴 보기
# crontab -l
no crontab for root

작업스케쥴 모두 삭제
# crontab -r
no crontab for root

작업스케쥴 수정
# crontab -e
no crontab for root - using an empty one

작업 스케쥴 일정표

[minute] [hour] [day] [month] [weekday] [command]

minute : 0 - 59
hour : 0 - 23
day : 1 - 31
month : 1 - 12
weekday : 0 - 6 (0 : 일요일)
command : 명령어

기타
*는 매분/매시간/매일/매달/매일이라는 의미
,는 여러개의 옵션을 줄때 사용. 1,2 1분과 2분 등
-는 연속된 범위를 나타냅
*/숫자 숫자마다 반복

두달에 한번씩 인증서 갱신을 한다면!

예제> 0 3 2 * * letsencrypt renew; service apache2 restart;

매달 3시 0분 2일에 command를 수행한다는 내용

이제 인증서가 잘 갱신되는지 지켜보는일만 남았다.

SSL인증서 적용하기(02) – 우분투 SSL 적용하기

우분투에서 SSL 인증서 적용 목표

  1. Let’s encrypt 패키지 설치
  2. Let’s Encrypt에서 인증서 발급
  3. 발급된 인증서 확인
  4. crontab을 사용하여 자동으로 업데이트 기능 적용
  5. 참조사이트 추가

이제서야 돌고 돌아서 우분투에 SSL을 적용하는 시점에 다다랐다. 한가지씩 따라해보면서 SSL 적용을 해보자.

1 Let’s encrypt 패키지 설치

# apt-get install letsencrypt
Reading package lists... Done
....

2 인증서 발급하기

HTTP로 접속이 가능한 상태에서 인증서를 발급받고 HTTPS 설정을 완료할 것이다.

# letsencrypt certonly --webroot --webroot-path=/var/www/html -d magpiebros.com

몇번의 실패가 반복되었는데.. 원인은 webroot-path의 경로가 올바르지 않아서였다. 다른 사이트들을 참조해보다가.. 다시 한번 시도 해보니 정상 인증서가 발급되었다. 쿨럭…

3 발급된 인증서 확인

ls /etc/letsencrypt/live/도메인명/
README  cert.pem  chain.pem  fullchain.pem  privkey.pem

cert.pem : 인증서
chain.pem : 인증서 발급자 파일
fullchain.pem : cert.pem + chain.pem
privacy.pem : 개인키


위와 같이 발급된것이 확인된다면, 일단은 어려운 고비는 넘겼다.
이제 발급받은 인증서를 서버에 적용할 차례이다.

글이 너무 길어져서 아파치에 적용하는 글은 새로운 글로 시작하려 한다.
변변찮은 글재주를 가진 글을 읽어주신 분께 감사를 드린다.

참고링크

SSL인증서 적용하기(01) – SSL 인증서 간략 설명

현재 내 블로그는 SSL인증서 구성이 정상적으로 이루어지지 않아서, “안전하지 않음”이라는 위험문구가 나타나고 있는 상태이다.

당신이 보는 시점에 따라 녹색의 안전 좌물쇠가 표시되어져 있을 수도 있겠지만 말이다.

(녹색 자물쇠가 표시되어 있다면, 이 글은 신뢰할만한 글이라는 이야기로 받아들여도 될것이다.)

대부분의 질문과 답변 그리고 정보라고 적혀있는 사이트들은 다음과 같은 이야기들이였다.

“이렇게 해봐. 될껄? 안되면 구글 검색 다시 해보시고… 그래도 안되면 스택오버플로어 가서 검색하고 그래도 안되면 당신 운영체제를 다시 설치해봐”

맥파이의 생각

위와 같이 도움도 되지 않고, 그냥 명령어 몇개 따라서 실행해보고 되면 모두 잊어버리는 그런 블로그가 되고 싶지는 않다. 그렇기 때문에 당신이 원하는 답만 툭툭 던져주고 끝내지 않고, 뭔가 얻어갈수 있는 그런 내용들로 채울려고 노력할 것이다.

오늘은 너무 늦었으니..

내일 뀌뚤이(우리아들 애칭??)가 나에게 자유로운 시간을 줄때, 글을 이어가겠다.

이틀이 지나버렸다.

다시 글을 이어가겠다.

SSL(Secure Sockets Layer)는 넷스케이프 내비게이터의 보안 유지 기술이다.

Layer는 계층 단위로 보는것이 이해하기 편한데, 통신위에 Secure Socket 계층이 한단계 더 있어서 보안적인 측면이 한단계 더 높아졌다고 이해한다면, 간략한 이해는 될것으로 보인다.

SSL 인증서의 장점 및 역할

  • 통신 내용이 노출, 변경되는 것을 방지
  • 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지 확인가능
  • SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.

이제 기본적인 지식은 익혔으니, 다음 글을 통해서 적용해보자.

참고사이트