웹사이트 신뢰와 안정성을 인증하는 SSL 인증서.
타 팀에서 운영하던 웹사이트를 멍 때리다 가장 쥬니어가 떠 맡아 SSL 인증서를 교체해야 했다. 오픈소스 let's encrypt 통해 SSL 인증서(무료, 유효기간 90일)를 발급 받는 건 수월했으나, 이를 네이버클라우드(NCP)에 등록하자니 "인증서가 유효하지 않습니다" 에러가 계속 내 발목을 잡았다.
전에 교체해 보신 분이 윈도우에서만 된다고 했었는데.. 정확한 정보는 아니다.. 난 macOS 인 걸..
AWS 등록하니 잘 된다. 알고리즘 문제도 아니다..
인수인계 문서도 없다..(있지만 이건 없는거다.. 서비스 초기 개발 멤버들도 없다..)
...
NCP에 문의하니 "root CA와 root sub 입력해 줘야 합니다." 답변 받음.
친절한 답변 감사합니다..
"인증서가 유효하지 않습니다" 이슈 해결해 보자.
운영서버에 ssh 접속해서 certbot 설치해 준다.
ssh root@{IP주소}
비번 입력
sudo apt-get install nginx
sudo apt update
sudo snap install core; sudo snap refresh core;
sudo apt-get remove certbot
sudo snap install --classic certbot
다음으로, 명령어를 입력하여 SSL 인증서 발급 받기.
최신 버전은 기본이 ECDSA로 되어 있는데 이는 NCP에서 인식을 못한다. 따라서 RSA 로 명시해줘야 한다.
sudo certbot certonly --manual -d {도메인.com} -d *.{도메인.com} --preferred-challenges dns --key-type rsa
다음에 나오는 레코드를 네이버 글로벌 DNS에 입력해준다.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
뭐시기.도메인.com.
with the following value:
레코드 # 이걸 입력해주고
다음 엔터 후 나온 레코드도 네이버 글로벌 DNS에 입력해준다.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
뭐시기.도메인.com.
with the following value:
레코드 # 이것도 입력해 준다
네이버 글로벌 DNS에 입력 후 "실행 적용" 클릭 후에 터미널에서 엔터
그러면 몇가지를 물어보는데 읽어보고 원하는 내용 클릭하면 인증서 발급 완료.
아래 문구가 떴다면 인증서가 잘 발급 되었다고 볼 수 있다.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Successfully received certificate.
뭐시기뭐시기 어디에 저장되어 있는지 루트 정보 뭐시기뭐시기
# 다음 명령어 입력
sudo certbot certonly --manual -d {도메인.com} -d *.{도메인.com} --preferred-challenges dns
vi /etc/nginx/sites-enabled/default -> 주석처리
nginx -t
service nginx reload
인증서가 잘 발급 되었는지, 인증서에 대한 정보를 보려면 아래 명령어를 입력한다.
sudo certbot certificates
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: -
Serial Number: -
Key Type: RSA
Domains: -
Expiry Date: 2023-07-15 07:01:05+00:00 (VALID: 89 days)
Certificate Path: path/fullchain.pem
Private Key Path: Path/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
인증서를 발급 받았다면 사실상 80% 다 왔다!
터미널에서 인증서 내용에 있던 path 참조하여 필요한 .pem 가져온다
먼저 Certificate List 페이지에서 "인증서 등록" 버튼 클릭 후
순서대로 입력해준다.
# 위 발급받은 인증서 정보를 통해 파일 {path} 알 수 있다
sudo cat {path}/privkey.pem
sudo cat {path}/cert.pem
sudo cat {path}/fullchain.pem
# fullchain.pem 3개 중 중앙. 두번째 내용 입력헤 준다.
실상 "인증서가 유효하지 않습니다" 에러문을 본 사람이라면 인증서 발급까지 완료한 분들이 대부분일 것이다.
결국 root CA 입력하지 않아 계속 "인증서가 유효하지 않습니다" 에러 난 것.
쉽게 말하면 발급 받은 인증서 위치(경로)가 정확하게 어디인지 알려주는 .pem 파일이라 생각하면 된다.
(AWS에서는 이럴 필요 없지만 NCP 에서는 해줘야한다.. 마케팅일까.. 뭘까..)
보통 아래 path로 가면 있다.
sudo cat /etc/ssl/certs
ls
파일 중에서 ISRG_Root_X1.pem 이녀석을 !!!
chain 입력란에 같이 입력해주고 "등록하기" 클릭.
끝 !