HTTPS SSL인증서 수동 갱신하기 (Let’s Encrypt renew)

12

이번에는 제가 블로그를 만들면서 Let’s Encrypt(렛츠 인크립트)로부터 발급받은 HTTPS 인증서인 SSL 인증서를 갱신하는 방법을 알아보겠습니다.

워드프레스 블로그 HTTPS SSL 인증서 설정 글과 두 개의 워드프레스 사이트에 대한 HTTPS 세팅하기 에서 언급했듯이 렛츠 인크립트 인증서는 90일간만 유효합니다. 아마 만료되기 2주 전에 여러분들은 등록했던 이메일주소를 통해 어느사이트 인증서가 만료될 예정이라는 소식을 받게 될 겁니다. 그러면 새롭게 90일을 연장할 준비가 된 것입니다. 그 전에는 연장하고 싶어도 연장할 수 없습니다.

이 글은 수동으로 SSL 인증서를 갱신해주는 방법입니다. 자동갱신 설정은 연재작 다음편에서 다루도록 하겠습니다.

 

결론부터 말하자면 CLI 환경으로 서버에 접속해서 cerbot-auto 파일이 있는 위치에서 아래 명령어를 입력하면 됩니다.

certbot-auto renew

또는 

./certbot-auto renew

모든 인증서 리뉴얼(수동갱신) 방법 

제 블로그의 두 개의 워드프레스 사이트에 대한 HTTPS 세팅하기 글을 읽어보셨다면 저는 하나의 서버에 여러개의 도메인에 대한 SSL 인증서를 보유하고 있다는 걸 아실겁니다. 혹은 하나의 도메인이더라도 www. 서브도메인의 인증서까지 함께 보유중이라면 모든 인증서를 한번에 갱신하는 편이 편리합니다.

 

도메인이 하나이든 둘 이상이든 모든 도메인을 갱신하는 명령어는 certbot-auto renew 인데 SSL 인증서를 발급받을 당시 다운 받은 cerbot-auto라는 프로그램을 사용한 명령어이므로 해당 위치에서 명령어를 넣거나 해당파일이 위치한 경로까지 적어서 명령어를 실행해야합니다.

 

제경우 cerbot-auto 프로그램 파일이 bitnami 사용자의 홈폴더에 있으므로 cd ~ 명령어로 사용자 홈폴더로 이동한다음 ls 명령어로 살펴보면 아래 스크린샷처럼 cerbot-auto가 있는 걸 보실 수 있습니다. 이 파일은 앞으로도 인증서를 갱신하는데 사용하므로 삭제하는 일이 없도록 합시다. 

certbot auto 프로그램 위치로 이동

 

이렇게 해당 프로그램 파일이 있는 위치에서 명령어를 실행하면 사이트가 가진 모든 도메인에대한 Let’s Encrypt 인증서 갱신을 시도하는 건데요. 

certbot-auto 인증서 갱신 시뮬레이션(Dry Run)

cerbot-auto 명령어에는 인증서를 실제로 갱신해보기 전에 갱신이 이상없이 될지 시뮬레이팅 해 볼 수 있는 Dry Run(드라이 런) 옵션이 있습니다. 이 옵션을 넣어서 실행시 가짜로 갱신을 돌려본다고 생각해보면 됩니다.

Dry Run 옵션으로 돌려보면 성공과 실패여부가 나오기는 하지만 이것은 어디까지나 시뮬레이션일 뿐이지 시뮬레이션 결과가 실제로 갱신시 실패, 성공을 보장하진 않습니다. 아래처럼 갱신 명령어에 --dry-run 옵션을 붙여 입력하면 됩니다.



./certbot-auto renew --dry-run

두개의 도메인에대한 SSL 인증서 갱신 시뮬레이션 성공 메시지

서버에 있는 인증서가 여러개라면 하나씩 시도하고 마지막에 결과가 나옵니다.

위 그림 중간에 Congratulations… 메시지가 나오고 그아래 인증서 경로와 끝에 성공(success)이라고 나옵니다. 위 스크린샷은 2개의 인증서폴더가 있어서 두개 표시되고 있습니다(빨간 화살표). 실패한다면 failure, fail, failed 같은 메시지가 붙을 겁니다.

cerbot-auto: 실제로 SSL 인증서 갱신 시도하기

./certbot-auto renew

한 도메인씩 시도하는데, 진행과정에 메시지를 잘 보면 아직 만료기간이 한참 멀었을 땐 Cert not yet due for renewal 이라는 메시지가 나옵니다.

인증서 갱신 기간이 아닙니다.

 

인증서 발급할 때가 되었을 때는 Cert is due for renewal, auto-renewing… 라는 메시지가 나오면서 발급을 시도합니다. 인터넷 연결 장애등의 이유로 실패시 재시도 해보셔야겠지요

렛츠인크립트 인증서 갱신

완료되면 위 처럼 new certificate deployed without reload 메시지가 나오고 pem파일 위치를 알려줍니다.

모든 Let’s Encrypt 인증서 기간, 남은 날짜, 상태 확인하기 

언제든 인증서를 확인하고 싶을 때도 있을 것입니다. 렛츠인크립트 인증서 만료날짜를 보고 싶거나 몇일 남았는지 알 수 있는 명령어도 있습니다.

certbot-auto 프로그램 파일이 있는 위치에서 아래 명령어를 실행하면 됩니다.

./certbot-auto certificates

모든 렛츠인크립트 인증서 확인

위 그림처럼 Certificate Name 이라는 항목당 한 도메인씩 정보가 나옵니다. 빨간상자 순서대로 도메인이름( 제경우 www도 받아둬서 두개가 나오는 군요) , 만료일, 남은 날짜가 표시되고 있습니다. 그 밑으로는 실제 인증서 파일 위치가 표시되고 있군요.

Found the following certs:
Certificate Name: 인증서 이름
Domains:메인도메인,www.서브도메인
Expiry Date: 만료일 날짜 및 시간 (VALID: 만료일까지 남은 날짜수 days)
Certificate Path: /etc/인증서파일 경로/fullchain.pem
Private Key Path: /etc/인증서파일 경로/privkey.pem

 

이런 인증서 갱신 과정은 명령어 한 줄로 매우 간단하지만 상용서버(블로그)는 계속 살아있는 게 첫 째이므로 자동으로 갱신되도록 해주는 게 좋을 것입니다. 3개월에 한번씩이더라도 귀찮거든요. 그래서 다음글에서는 자동갱신이 되게 서버를 설정해보도록 하겠습니다.

12 댓글

  1. 감사합니다! 처음에 AWS 서버로 워드프레스 사이트 제작하고, SSL 적용하고 이렇게 갱신까지 모두 이 사이트를 통해서 도움을 얻었습니다. 저도 블로그를 운영하는 입장으로 유용한 정보 감사합니다.

  2. 여기 나온 설명대로 2개가 아니라 3개의 도메인까지 연결해봤는데 전혀문제없이 잘되네요.ㅎ,근데 혹시 한아이피로 들어오기 때문에 구글seo문제가 되지않는지 궁금합니다. 그리고 3개중에서 도메인이름을 바꾸면 그냥 바꿔도 되는지 아니면 ssl을 다시 받아야 하는지 궁금합니다.

    • 축하합니다. 3개까지 하셨다니 제 글에 설명한 방법을 완전히 이해하셨나보네요.

      SEO는 IP와 관련없습니다.
      SSL 인증서의 목적이 도메인에대한 인증이므로 해당 도메인에대한 인증서를 받아야합니다.

      • 아..네..그렇군요. 덕분에 지금 3개를 유용하게 잘쓰고 있어요..이렇게해보니 재밌네요.고맙습니다.

  3. 안녕하세요. 올려주신 글 덕분에 사이트 구축부터 인증서 설치까지 순조롭게 완료할 수 있었습니다. 지난 달 인증서 만료가 다가와 올려주신 방법대로 인증서를 갱신하였습니다. 당시에는 성공적으로 인증서 갱신이 완료되었는데, 오늘자로 인증서 만료로 사이트 접속이 제대로 되지 않고 있습니다. 다시 한번 인증서를 갱신하려고 했지만 기한이 많이 남아 갱신이 불가하고 명령어를 통해 서버에서 확인해보니 60일 남은걸로 표시되지만 실제 적용된 인증서는 어제부로 만료되었습니다. 서버에 사이트 2개가 설치되어있고 두 사이트 모두 같은 문제가 나타납니다. 이럴 때는 인증서를 재설치 해야하는지 궁금합니다. 잘 정리되어 쉽게 따라할 수 있고 이해할 수 있게 글을 남겨주셔서 정말 감사드립니다.

    • 인증서 기간이 남아있는데 그러는건 또 무슨 오류일지 모르겟군요. 웹서버설정에서 인증서 경로를 정확히 해줬는지 확인해보시기 바래요. 인증서는 재설치하고 세팅하셔도 됩니다.

    • 저도 연장 후 70일 기간 남았는데 자꾸 안전하지 않은연결이라고 떠서 살펴보니 갱신을 하고 서버 재시작을 안해서 그렇더군요.
      아파치 서버 재시작 하고 나니깐 잘 적용 됐습니다.
      sudo /opt/bitnami/ctlscript.sh restart apache 이 문구 적용해서 아파치 서버 재시작 한번 해보세요.
      스위프트님 항상 감사합니다.

      • 저도 이 댓글 보고 해결했습니다. 저는 restart 대신에 reload를 crontab에 작성해서 해결했네요

  4. 스위프트님 안녕하세요. 일단 좋은 글 감사합니다.
    다름이 아니라 SSL 관련해서 궁금한 점이 있어 문의 드립니다.
    SSL이 도메인에 대한 인증이라고 알고 있는데요, 현재 스위트프님 연재글 보고 라이트세일에 인스턴스 생성하여 인증서까지 모두 설정을 해 놓았습니다.
    이 상태에서 라이트세일의 기존 인스턴스를 삭제하고, 다시 생성해서 이전과 동일한 도메인을 사용한다고 하면 새로운 인스턴스 내에서 Let’s Encrypt를 이용한 SSL 인증서 발급이 가능한지 궁금합니다. (아직 기존 인증서 유효기간이 남아 있습니다)
    발급이 불가능하다면 기존의 인증서를 백업해 놓은 뒤에, 새로운 인스턴스 내에 넣어주고 연결해 주는 작업이 필요한가요?

      • 빠른 답변 감사합니다. 몇개월 전에 이것저것 건드리다 방치했었는데, 왠지 새로운 마음가짐으로 시작하고 싶어서 여쭤봤습니다. 그냥 삭제 후에 새로 발급받아야 겠네요. 이번엔 꾸준히 해봐야겠습니다. 😉

댓글을 남겨주세요.(익명, 구글, wordpress,페이스북, 트위터 계정 로그인 지원) 마크다운 문법 사용가능