
업무상 와일드카드 인증서가 필요한 일이 생겼다.
업무상 필요하지만 무료로 가능하면 더 좋지 아니한가~
무료 보안인증서는 Let's Encrypt에서 제공해준다.
도메인별 발급도 가능하지만 와일드카드로도 가능하다.
certbot을 이용하면 자동갱신도 된다. 기존에는 도메인별 발급이라 certbot으로 세팅 후 신경 안쓰고 있었는데 이번엔 와일드카드다.
도메인별 인증은 http인증으로 처리하지만 와일드카드는 dns인증이 필요하다.
와일드카드 인증서는 API서비스를 제공하는(예를들면 cloudflare 등)곳에서는 무료 갱신도 가능하다.
하지만 이번에는 발급 받은 파일을 외부 서버에서 따로 사용해야해서 자동 갱신이 복잡해진다.
자동 재발급하고 외부로 rsync등을 통해 외부 서버로 넣어주면 되긴한데 아직은 외부 서버를 컨트롤 할 수 있는 형편이 아니라서 자동 재발급 문제는 추후에 다시..일단 수동재발급으로 진행한다.
(DNS서비스는 기존에는 dnszi를 사용했는데 추후 자동갱신을 위해 API서비스를 사용할수도 있고 해서 cloudflare로 연결 했다)
이번에는 와일드카드 인증서를 발급 하고 수동으로 전달까지만 할 예정이다.
이 과정을 문서로 간단히 남긴다.
1. 우선 나는 오라클클라우드 프리티어에 설치된 우분투 서버에서 인증서를 발급 받고 복사하여 전달 하려 한다.(인증서 발급용서버로 써도 되고 기타 로컬PC에서도 충분히 가능하다!, 재발급 할때마다 다른서버, 다른PC에서도 가능)
2. 우분투 서버 접속 하여 certbot설치 snap install certbot
3. DNS인증이니까 DNS정보를 컨트롤 할 수 있는 권한 확보(DNS에 TXT값을 입력 해서 인증 받는 방식이다.) 이게 안되면 와일드카드는 일단 바이바이.
4. 인증서 발급 시작(도메인은 예를 드는거니 내 도메인으로 작성)
sudo certbot certonly \
--manual \
--preferred-challenges dns \
--cert-name zzom.co.kr-wildcard \
-d zzom.co.kr \
-d '*.zzom.co.kr'
보통 와일드카드가 아닌경우는 /etc/letsencrypy/live/도메인명/*.pem 의 경로로 파일이 생성된다.
나는 이미 zzom.co.kr로 발급 받아 사용중이니까 와일드카드도메인은 다른 이름으로 발급을 위해 cert-name을 zzom.co.kr-wildcard로 했다. 물론 다른이름으로도 가능하다!
5. 위와 같이 입력 하면 몇가지 물어본다...뭐 기억나는건 약관에 동의하느냐, 메일로 정보를 받겠느냐, 홍보메일 받겠느냐..뭐 이런였던 것 같다. 영어로 되어 있으니 번역기를 돌려보거나 하면 된다. 별내용아님.
Please read the Terms of Service...
Do you agree? (Y/N)
Would you be willing to share your email with EFF? (대략 뉴스메일 받겠냐..?뭐 그런)
6. 그 다음은 Let's Encrypt에서 dns에 입력할 txt값을 알려준다.
난 이미 다 끝난 상태라 확실히 기억 안나지만...
_acme-challenge.zzom.co.kr
TXT 값 출력됨(랜덤문자같은)
대략 이렇게 보여준다. 보여주면서 진행하냐고 또 묻는데...여기서 바로 엔터 하면 안되고 아래 7번항목으로 가서 DNS입력을 해야한다.
7. 저기서 알려주는 내용을 DNS에 TXT레코드로 추가하는 것이다.
TXT입력 할 때 이름은 _acme-challenge 까지만 입력(cloudflare에서는 뒤에 도메인명까지 붙이면 자동으로 잘라낸다)
콘텐츠항목에 TXT출력값을 넣어주고 저장
8. 여기까지 하고나면 내 TXT값이 잘 입력되었나 궁금하다. 꼼꼼하게 확인 후 진행하면 좋으니까 잘입력되었나 보자.(1-2분 후 시도하자)
dig TXT _acme-challenge.zzom.co.kr @1.1.1.1 +short (여긴 TXT값 나옴)
혹은 dig NS zzom.co.kr +short (여긴 네임서버만 나옴)
위 명령어를 이용하면 입력된 TXT값을 확인 할 수 있다.(이건 앞서 발급받던 터미널과 다른 터미널을 띄워서 하면 되겠다)
나 같은 경우는 내가 넣은 TXT값 외에도 두개가 더 보였다. 하지만 확실히 내가 입력한건 하나였다. 다양하게 확인 해 본 결과 3개중에 내가 입력한 값이 확실히 하나가 있으니 다른 두개는 무시해도 된다는 결론!(뭐 다른데서 진행하던 캐시랑 관련 있다는 내용들만 보였고 결국 삭제는 방법이 안나옴)
9. 이제 앞서 인증서 발급과정(certbot)에서 남아있는 엔터!
나는 여기까지 하면 바로 발급인줄 알았는데..
헉..또 TXT값을 입력하라고 나온다. 동일한 방법으로 입력 dig명령어로 확인 후 엔터 하면 된다.
TXT입력은 *.zzom.co.kr과 zzom.co.kr두개라서 두번이라는 듯.
여기까지 하면 발급이 된다!!야호!
/etc/letsencrypy/live/zzom.co.kr_wildcard/cert.pem
/etc/letsencrypy/live/zzom.co.kr_wildcard/chain.pem
/etc/letsencrypy/live/zzom.co.kr_wildcard/fullchain.pem
/etc/letsencrypy/live/zzom.co.kr_wildcard/privkey.pem
이렇게 네개의 파일이 생성된다.
여기서 꼭 필요한건 fullchain & privkey 두 파일이다.
아파치설정에는 cert.pem 파일도 있지만 위 두파일만으로 처리 된다.
찾아보니 fullchain = cert + chain의 개념이라고 보면 된다네.
두파일을 외부 서버로 복사 후 해당서버의 apache 혹은 nginx의 설정에서 파일을 불러오면 된다.
아파치의 경우는 아래와 같다.
SSLCertificateFile /경로/fullchain.pem
SSLCertificateKeyFile /경로/privkey.pem
이제 두 파일을 복사하고 다운로드 할때 권한 문제, 심볼릭링크인지를 잘 챙겨야한다.
privkey.pem의 경우 기본상태는 권한이 600이다.이러면 다운로드완료가 안되거나 용량이0으로 나온다.
그래서 나는 그냥 간단히 아래와 같이 해결했다.
cp -L /etc/letsencrypt/live/zzom.co.kr-wildcard/privkey.pem /root/privkey.pem
cp -L /etc/letsencrypt/live/zzom.co.kr-wildcard/fullchain.pem /root/fullchain.pem
chmod 644 privkey.pem
cp -L /etc/letsencrypt/live/zzom.co.kr-wildcard/privkey.pem /root/privkey.pem
cp -L /etc/letsencrypt/live/zzom.co.kr-wildcard/fullchain.pem /root/fullchain.pem
chmod 644 privkey.pem
위와 같이 하고나서 /root안에 있는 두파일을 압축하여 외부 서버로 전달하여 사용하니 아주 잘 된다!
마지막으로 privkey.pem 파일은 보안에 각별히 신경 써야한다.
이유는 [privkey 유출 = HTTPS 완전 뚫림] 이렇게 볼 수도 있다는 거다.
지금까지 certbot을 이용한 와일드카드 인증서 발급에 관해 알아봤다. 끗~
* 참고로
서브도메인 단독용을 dns방식으로 발급 받으러면
certbot certonly --manual --preferred-challenges dns -d abc.aaa.zzom.co.kr 이렇게 하고
DNS입력 할 때 TXT이름을 _acme-challenge.abc.aaa로 입력해주고 컨텐츠 값을 입력해줘야
dig TXT _acme-challenge.abc.aaa.zzom.co.kr @1.1.1.1 +short 하면 확인이 가능해짐..!
서브도메인 단독으로 DNS방식 발급 할때는 입력되는 이름값 잘 체크!
'IT 인터넷' 카테고리의 다른 글
| [오라클클라우드] 서버구축을 위한 기본 세팅과 우분투APM설정까지 (번외편) (0) | 2024.11.27 |
|---|---|
| [오라클클라우드] 서버구축을 위한 기본 세팅과 우분투APM설정까지 Part2 (0) | 2024.11.26 |
| [오라클클라우드] 서버구축을 위한 기본 세팅과 우분투APM설정까지 Part1 (0) | 2024.11.25 |
| [LINUX] 시스템 정보 확인 (0) | 2024.11.24 |
| [LINUX] 메일 발송 리턴 메시지 모음 (0) | 2024.11.23 |