이번 실습에서는 OCI에서 아래와 같은 구성으로 Compute Instance를 생성하여 인증서를 발급 받을 예정입니다. 생성한 VM에서 CLI를 사용할 수 있도록 OCI CLI설정을 진행합니다. Compute Instance 생성이나 접속, CLI 설정관련 자세한 내용은 아래 포스팅을 통해 확인하실 수 있으며, 이번 포스팅에서는 자세한 내용을 다루지 않습니다.
API 키 화면에서 Action 버튼을 통해 확인했던 구성 정보를 ~/.oci/config 파일로 생성해 줍니다. key_file의 경로는 업로드한 api-key 파일의 위치 및 파일명으로 지정합니다.
$ cd ~/.oci
$ vi config
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaaeaacd7afudut..............
fingerprint=8a:fd:9d:aa:81:37:b1:..............
tenancy=ocid1.tenancy.oc1..aaaaaaaam3ldu4ndce..............
region=ap-seoul-1#만약 seoul 리전이 아닌경우 실제 실습할 리전으로 대체합니다.
key_file=~/.oci/oci-api-key.pem# 실제 저장한 키파일의 위치 및 파일이름으로 지정합니다.
OCI CLI 설정이 잘 되었는지 확인하기 위해 아래와 같이 tenancy namespace 정보를 조회합니다.
$oci os ns get
results
{
"data": "axlpeslmb1ng"
}
4. Certbot 패키지 설치
클라우드쉘에는 기본적으로 Python3이 설치되어 있기 때문에 별도의 Python 설치 과정없이 바로 Certbot 패키지를 설치할 수 있습니다. 아래 명령어를 이용하여 클라우드쉘에 Certbot 패키지를 설치합니다.
$sudo pip3 install certbot
5. certbot-dns-oci 플러그인 설치
certbot 프로그램에서 OCI DNS 서비스 접근을 위한 별도의 플러그인 설치가 필요합니다. 아래 명령어를 차례로 입력하여 certbot-dns-oci 플러그인을 설치해주세요. 플러그인 관련하여 자세한 정보가 필요하신 경우 플러그인 깃허브 레파지토리 페이지에서 확인하실 수 있습니다.
여기까지 설정이 정상적으로 완료되었다면 이제 마지막으로 아래 certbot 명령어를 입력하여 인증서를 생성합니다. 아래 명령어를 실행하면 cloudshell의 “logs” 디렉토리에 로그를 저장하고 “work”를 작업 디렉토리로 사용하고 “config” 디렉토리에 인증서 및 기타 항목을 저장합니다. 나머지 세가지 옵션과 해당 인수는 certbot에게 챌린지 및 응답에 OCI DNS 플러그인을 사용하고 dns 관련 작업을 검증하기 위한 시간을 120초로 설정, “*.oci-younghwan.xyz”에 대한 인증서 생성을 요청합니다.
Enter email address (used for urgent renewal and security notices) -> 이메일 주소 입력
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must agree in order to register with the ACME server. Do you agree? -> “Y” 입력
Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let’s Encrypt project and the non-profit organization that develops Certbot? We’d like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. -> “Y” 입력
설정이 완료되면 아래와 같은 화면을 확인할 수 있습니다.
명령어를 실행한 위치 기준으로 /config/live 경로로 이동하면 아래와 같이 생성된 인증서를 확인할 수 있습니다.
생성된 인증서 파일 설명
cert.pem : 요청한 도메인에 대한 인증서 파일 (Certificate)
chain.pem : 인증서 검증을 위한 체인 파일
fullchain.pem : cert.pem + chain.pem 두 파일을 하나로 합친 파일
privkey.pem : 생성한 인증서 파일에 대한 개인키 파일
7. OCI 인증서 서비스에 인증서 등록
앞서 6번째 단계에서 생성된 인증서를 OCI 인증서 서비스에 등록합니다. 인증서 서비스에 등록할때 필요한 파일은 아래를 참고해주세요
cert.pem : 요청한 도메인에 대한 인증서 파일 (Certificate)
chain.pem : 인증서 검증을 위한 체인 파일
isrgrootx1.txt : root_ca Let’s Encrypt의 root ca 파일 Root CA 파일 다운로드
privkey.pem : 생성한 인증서 파일에 대한 개인키 파일
전체 메뉴에서 “ID & 보안” -> “인증서” -> “인증서” 메뉴를 클릭합니다.
“인증서 생성” 버튼을 클릭합니다
인증서 생성화면에서 “임포트됨”을 선택하고 인증서 이름, 설명을 입력합니다. (어떤 도메인에 대한 인증서인지 식별할 수 있는 이름으로 작성합니다.)
주체 정보는 “임포트됨” 유형에서는 해당 없기 때문에 “다음” 버튼을 눌러서 다음단계로 이동합니다.
인증서 생성 단계에서는 앞서 생성된 인증서 정보를 입력합니다.
인증서 : cat 명령어를 통해 cert.pem의 내용을 확인 후 복사 붙여넣기 합니다.
인증서 체인 : cat 명령어를 통해 chain.pem의 내용을 확인 후 복사 붙여넣고 바로 다음에 아래 Root CA 파일의 내용을 복사하여 붙여넣기 합니다. Root CA 파일 다운로드
전용 키 : cat 명령어를 통해 privkey.pem의 내용을 확인 후 복사 붙여넣기 합니다.
전용키 암호 : 입력하지 않음.
“다음” 버튼을 클릭합니다.
규칙 단계는 “임포트됨” 유형에서는 해당 없기 때문에 “다음” 버튼을 눌러서 다음단계로 이동합니다.
입력한 내용을 검포 후 “인증서 생성”버튼을 클릭합니다.
생성된 인증서 정보를 확인합니다.
마무리 하며…
이번 포스팅에서는 certbot을 이용하여 간편하게 인증서를 발급받고 OCI 인증서 서비스에 등록하는 과정에 대해 살펴보았습니다. 다음에는 OCI 인증서 서비스를 다른 OCI 서비스 (로드밸런서, API Gateway)에 통합하는 과정도 살펴볼 예정입니다. 아래 인증서 서비스관련 포스팅의 링크를 참조하세요.