(AWS) HTTPS 설정 - Let's encrypt

최건·2025년 5월 1일

참고 블로그

이전 블로그

HTTPS 설정하기

  1. 인스턴스 접속하기
  2. 아래 코드 입력하기
sudo /opt/bitnami/bncert-tool
  1. Domain list[]: 부분에 도메인 입력하기

  2. 도메인 입력 후 나오는 [Y/n]은 해당 도메인에 www.도메인을 설정할 것인지 여부를 묻는 것

  3. HTTP 요청이 올 때 HTTPS로 전환 (리다이렉션)할 것인지 묻는 것

  4. 안내 사항 및 동의 여부를 묻는 것

  5. 이어서 이메일을 입력하고 구독에 동의하냐고 물어봅니다 -> 거절하면 에러가 뜹니다.

  6. 완료 !

중요

  • 만약 80 포트나 443 포트를 사용하고 있는 인스턴스가 존재한다면 종료 후 위 과정을 진행해야 합니다.

  • 만약 포트가 사용중이면 아래와 같은 오류가 발생합니다.

  • 위 과정을 완료하게 되면 80포트를 사용중인 아파치 서버가 보인다.

  • 따라서 해당 아파치 서버를 종료해야 서버 인스턴스를 80포트로 띄울 수 있다.

cd /opt/bitnami
sudo ./ctlscript.sh stop apache

키 위치

/opt/bitnami/letsencrypt/certificates/도메인명.key
/opt/bitnami/letsencrypt/certificates/도메인명.crt
/opt/bitnami/letsencrypt/certificates/도메인명.issuer.crt
  • Node Js
const privateKey = fs.readFileSync('/opt/bitnami/letsencrypt/certificates/api.sosohan.shop.key', 'utf8');
const certificate = fs.readFileSync('/opt/bitnami/letsencrypt/certificates/api.sosohan.shop.crt', 'utf8');
const ca = fs.readFileSync('/opt/bitnami/letsencrypt/certificates/api.sosohan.shop.issuer.crt', 'utf8');

const credentials = {
    key: privateKey,
    cert: certificate,
    ca: ca
};

const httpsServer = https.createServer(credentials, app);
  • Nest Js
const isProd = process.env.NODE_ENV === 'prd';
const httpsOptions = isProd
? {
  key: fs.readFileSync('/opt/bitnami/letsencrypt/certificates/testhttpsserver.store.key', 'utf8'),
  cert: fs.readFileSync('/opt/bitnami/letsencrypt/certificates/testhttpsserver.store.crt', 'utf8'),
  ca: fs.readFileSync('/opt/bitnami/letsencrypt/certificates/testhttpsserver.store.issuer.crt', 'utf8'),
}
: undefined;

const app = await NestFactory.create(AppModule, isProd ? { httpsOptions } : undefined);
profile
개발이 즐거운 백엔드 개발자

0개의 댓글