티스토리 뷰

회사에서 진행하는 프로젝트가 AWS EC2 인스턴스에 배포되어 있었고 TLS/SSL 적용이 필요하여

해당 인스턴스에서 certbot certonly --standalone 명령어 사용으로 인증서 생성 후 spring boot(java) 에 적용하였다.

 

프로젝트가 회사의 서비스를 소개하는 간단한 페이지로 구성되어 있어 단순 반복 업무인 배포 행위를 줄이기 위해

새로운 EC2 인스턴스를 생성하고 CodePipeline 으로 자동 배포를 적용한 후 인증서도 적용하기 위해

--standalone 명령어를 사용하여 인증서 발급을 시도했을 때 아래와 같은 에러 메시지가 발생했다.

 

 

동일한 구성의 EC2 인스턴스 2개에서 어떤건 인증서 발급이 되고 안되고의 이유는 아래와 같다.

 

첫 번째 인증서 발급을 시도한 EC2 인스턴스는 해당 인스턴스 IP를 호스팅 업체에서 구매한 도메인에 매핑한 후

인증서 발급을 시도하여 Letsencrypt certbot이 도메인에 접근했을 때 매핑된 ip/record가 확인되어 정상적으로

인증서 발급이 되었다.

 

두 번째 인증서 발급을 시도한 EC2 인스턴스는 사전에 매핑 작업을 하지 않았고 인증서 발급을 시도하여 소유자 확인이

되지 않아 발생한 문제였다.

 

Option --manual 사용하여 해결하기

기존에 생성한 EC2 인스턴스를 종료할 예정이며 새로 생성한 EC2 인스턴스를 사용할 예정이여서

위 에러 내용에서 언급한 도메인과 새로 생성한 인스턴스를 매핑하여 해결하는 방법이 있고

--manual 을 사용하여 해결하는 방법이 있다.

 

  • --standalone
    • 독립 실행형 웹서버로 도메인과 웹서버가 매핑되어 있는 경우 사용 가능
  • --manual
    • 옵션 설명에는 interactively or using shell script hooks 라고 표기
    • 아래에서 사용 방법 확인
sudo certbot certonly --manual -d '도메인명' [-d ... 여러개 적용 가능] --preferred-challenges dns

 

도메인명을 포함한 위 명령어를 입력 하고 IP being logged 질의에 'Y' 입력하면 아래와 같은 메시지가 출력된다.

메시지 내용을 읽어보면 확인 가능한데 도메인 서비스에 설정을 완료한 후 엔터 입력해야한다.

위 이미지에서 중간 아래쯤 보면 _acme-challenge.도메인명과 6hba 로 시작하는 긴 문자열로 인증 절차를 진행해야 한다.

 

후이즈 로그인 > 구매한 도메인 네임서버 고급설정 > SPF(TXT) 레코드 관리 클릭

 

도메인명에 _acme-challenge 입력, SPF(TXT) 레코드에 6hba 로 시작하는 문자열 붙여넣고 설정 저장 후

AWS EC2 인스턴스 ssh로 돌아와서 Enter 입력하면

 

IMPORTANT NOTES:

 - Congratulations ! ... 시작하는 인증서 발급 완료 메시지를 확인할 수 있다.

'Spring Boot' 카테고리의 다른 글

Let's Encrypt 를 이용한 SSL 적용  (0) 2023.03.27
jasypt 이용한 properties 암호화  (0) 2023.03.16