카페24에서 신청을 했든지 기관이전을 했든지 여하튼 카페24에서 관리하는 도메인이 있고 해당 도메인이 카페24 호스팅에 연결되어 있다고 가정함.

 

certbot을 실행하여 무료 인증서를 발급할 리눅스 머신이 하나 있어야 함. (라즈베리파이도 OK)

 

일단 certbot 설치

[root@localhost]# apt install certbot

 

이제 certbot을 이용해서 무료 인증서를 발급해야 하는데 domain.com 과 www.domain.com 2개의 도메인 모두 사용할 수 있는 인증서를 발급한다고 가정하자.

 

하지만 카페24는 아래와 같은 제약사항이 있다.

1. *.domain.com 같은 와일드카드 인증서 등록 불가능

2. DNS의 TXT에 _acme-challenge 등록시 _acme-challenge.domain.com 은 되는데 _acme-challenge.www.domain.com은 안됨

 

그래서 등록할 도메인을 하나하나 지정해야 하고, preferred-challenges에 dns 방식은 쓰지 못하고 http 로 해야 함.

아래와 같은 과정을 통해 위의 제약사항을 모두 만족하면서 원하는 도메인들의 인증서를 발급할 수 있음.

// 이메일과 도메인 부분만 수정할 것
[root@localhost]# certbot certonly --manual \
--preferred-challenges http \
--email my_id@email.com \
--agree-tos \
-d domain.com,www.domain.com

Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for domain.com
http-01 challenge for www.domain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y // <------------------ Yes 입력


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

b0EKjZ4mBZDh5PRNWrVhLD25ZGsqF2B84DqTaN--QGY.02zP4Bhl9_WSDf2sPe8HNfWf-T1J9ubZ5VIbtH3xzRU

And make it available on your web server at this URL:

http://domain.com/.well-known/acme-challenge/b0EKjZ4mBZDh5PRNWrVhLD25ZGsqF2B84DqTaN--QGY

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

 

여기까지 나오면 Enter 누르기 전에 http 확인을 위해 출력된 URL에 해당 값을 세팅해야 함.

카페24 호스팅 서버에 ssh로 접속하든 ftp로 하든,

DOCUMENT_ROOT 아래에 .well-known/acme-challenge 디렉토리를 만들고,

출력된 파일명(b0EKjZ4mBZDh5PRNWrVhLD25ZGsqF2B84DqTaN--QGY)으로 파일을 생성한 다음,

출력된 데이터(b0EKjZ4mBZDh5PRNWrVhLD25ZGsqF2B84DqTaN--QGY.02zP4Bhl9_WSDf2sPe8HNfWf-T1J9ubZ5VIbtH3xzRU)를 입력하고 저장하자.

그리고 엔터키를 누르면 www.domain.com 을 위한 http 확인을 위해 한 번 더 세팅하라는 메시지가 나옴.

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

Z4FkfF8OzoNfNLAY9vXTBjZKM_dBNSIap1efqh4I5Mo.02zP4Bhl9_WSDf2sPe8HNfWf-T1J9ubZ5VIbtH3xzRU

And make it available on your web server at this URL:

http://www.domain.com/.well-known/acme-challenge/Z4FkfF8OzoNfNLAY9vXTBjZKM_dBNSIap1efqh4I5Mo

(This must be set up in addition to the previous challenges; do not remove,
replace, or undo the previous challenge tasks yet.)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

 

카페24에선 domain.com 을 호스팅에 연결시키면 www.domain.com  도 자동으로 연결해주는 것 같으니 이미 생성된 디렉토리에 동일한 방식으로 Z4FkfF8OzoNfNLAY9vXTBjZKM_dBNSIap1efqh4I5Mo 파일을 만들고,

Z4FkfF8OzoNfNLAY9vXTBjZKM_dBNSIap1efqh4I5Mo.02zP4Bhl9_WSDf2sPe8HNfWf-T1J9ubZ5VIbtH3xzRU 를 입력한 다음 저장하자.

그리고 엔터키 누름.

 

만약 DNS의 A 레코드 설정으로 라즈베리파이에 서브도메인을 운영하고 있다면 해당 서브도메인도 전부 동일한 처리를 해줘야 함.

 

그러면 아래와 같은 메시지와 함께 인증서가 생성됨.

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/domain.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/domain.com/privkey.pem
   Your cert will expire on 2021-08-01. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 

인증서의 위치는 /etc/letsencrypt/live/domain.com 경로.

 

이제 카페24에서 외부 인증서 등록을 할 차례.

카페24 서비스에 접속해서 인증서 관리 > 외부인증서 관리 메뉴로 이동.

인증서(SSL CRT) 란에 /etc/letsencrypt/live/domain.com/cert.pem 내용을 복사해서 붙여넣고 인증서 확인 버튼을 눌러보자.

그럼 인증서 발행 CA에 R3 라고 나오고 SSL 인증서 도메인에 domain.com이 나올 것이다.

그 아래의 개인키(Private Key) 에는 /etc/letsencrypt/live/domain.com/privkey.pem 내용을 복사해서 붙여넣고 하단의 신청하기 버튼을 클릭하자.

신청되었다고 나오고 3영업일 이내에 적용된다는 메시지가 뜰 것이다.

그리고 확인버튼을 누르면 reload되고 외부 SSL 인증서 정보에 대기 상태로 등록된 인증서가 보일 것이다.

 

인증서에 문제가 없다면 시간이 좀 지난 뒤 연결 PORT(47610) 같이 연결된 포트 정보가 나오고 인증서 연결이 완료될 것이다.

브라우저에 https://domain.com 과 https://www.domain.com 모두 정상적으로 접근이 가능하면 성공. 

 

만약 DNS의 A 레코드 설정으로 라즈베리파이에 서브도메인을 운영 중이라면 여기서 생성된 인증서 파일을 연결해주고 웹서버를 재시작 해주면 됨.

 

 

 

문제는 인증서가 90일마다 갱신이 필요하다는 것과 manual 방식이기 때문에 수동으로 저걸 해줘야한다는 것인데, 

1년에 4번 한다고 생각하면 그냥 계속 수동으로 해도 크게 귀찮다는 느낌은 안들 것 같다.

 

 

 

[참고]

certbot.eff.org/docs/using.html#manual

 

 

 

Posted by bloodguy

댓글을 달아 주세요

  1. 안산드레아스 2021.12.12 15:32 신고  댓글주소  수정/삭제  댓글쓰기

    An unexpected error occurred:
    TypeError: __str__ returned non-string (type SysCallError)

    이런 에러가 발생하더군요 ㅠ

    • bloodguy 2021.12.15 15:57 신고  댓글주소  수정/삭제

      해당 에러 메시지로 검색해보니까 뭐가 많이 나오네요.
      OS라든가 실행하신 명령어라든가 도메인이라든가 정확한 환경을 명시하고 구글링 해보시면 답을 찾으실 수 있을 것 같습니다.