AWS Lightsail Bitnami 스택에서 SSL 갱신하기
AWS Lightsail Bitnami 스택에서 bncert-tool로 Let's Encrypt SSL 인증서를 수동 갱신하는 방법.

Let’s Encrypt에서 메일이 왔다. AWS Lightsail에서 관리하고 있는 서버가 있는데, 해당 서버에 연결한 도메인 주소의 SSL 인증서의 유효 기간이 얼마 남지 않았다는 내용이다.
최근의 Bitnami 스택의 패키지에서는 Let’s Encrypt를 이용해 SSL 인증서를 발급 및 등록하게 되면 기간이 1개월 남은 시점에 자동으로 갱신하는 crontab 작업이 설정되어서 자동으로 갱신된다고 하는데, 이번 경우에는 crontab 작업은 등록되어 있었으나 갱신은 되지 않았다. 아마 주기가 잘못 설정된 것 같다.
어쨌거나 아직 서비스를 유지해야하기 때문에, 수동으로 갱신할 필요가 있었다. Bitnami 패키지에 포함된 bncert-tool을 사용하면 간단하다.
$ sudo /opt/bitnami/bncert-tool루트 권한으로 bncert-tool을 실행하면, 아래와 같이 인증서를 발급할 도메인을 입력하라고 한다. 나는 AWS Route 53에서 구입한 도메인의 하위 도메인을 등록했다 — 사실 갱신이 목적이니 기존에 쓰고 있는 도메인과 같다.


현재 시점에서 아직 19일의 인증서 유효 기간이 남은 상황이기 때문에, 이미 등록되어 있는 도메인이라며 새로 생성하는 것 대신 이를 사용하게 될 것이라고 한다.

원래는 앞에 www를 붙이지 않은 도메인으로 접속할 시, 자동으로 www를 붙인 도메인으로 리다이렉트시킬 것인지를 물어본다. 원래 쓰고 있지 않았기 때문에 넘어간다.

안전하지 않은 연결인 HTTP로 요청했을 때, HTTPS로 리다이렉트하는 것을 활성화할 것인지 물어본다. 당연히 활성화했다.

설정이 완료되었으니, 다음과 같은 절차대로 실행할 것이라고 알려준다.
Apache 웹 서버를 멈추고, Let’s Encrypt 인증서를 갱신한다. 그리고 매 달마다 자동으로 인증을 갱신하는 cron job이 설정될 것이다. 웹 서버의 이름은 앞서 입력한 도메인과 같고, HTTP — HTTPS 리디렉션 적용 결과도 보여준다. 그리고 모든 사항이 적용된 후에 Apache 웹 서버가 재시작될 것이라고 한다.

그리고 나서 Let’s Encrypt 관련 안내를 받기 위한 메일 주소를 입력하라며 안내하고, 위와 같이 약관에 동의하는지 물어본다.
이제 설정이 끝났으니 한 번 브라우저에서 확인해보자.

11월 25일 만료 예정이었던 인증서가 내년 2월 4일로 3개월 늘어난 것을 확인할 수 있다. HTTP로 요청해도 HTTPS 리디렉션된 모습도 확인할 수 있었다.
서버 비용 절약과 빠른 구성을 위해 Lightsail에서 Bitnami가 제공하는 Node 프리셋 인스턴스를 처음 설정할 때만 해도 정말 이대로 포기해야하나 싶을 정도로 헤맸는데, 이젠 숙제처럼 뚝딱뚝딱 설정하고 해결할 수 있다 — cron job이 유효한 지 검증해보고 수정하는 숙제가 남긴 했지만.
강력한 컴퓨팅 리소스가 필요하지 않고, AWS EC2의 서버 비용은 부담된다면 Lightsail 인스턴스를 사용하는 것도 괜찮은 방법이라고 생각한다. Bitnami에서 제공하는 프리셋 패키지뿐만 아니라 다양한 Linux와 Windows Server도 제공하고 있다. 다만 가장 저렴한 인스턴스는 메모리 용량으로 인해 MySQL 같은 RDB를 사용하기 어려운 부분도 있다.
원문: Medium