DNS 인증을 통한 acme.sh Letsencrypt SSL 인증서 발급받기
컨텐츠 정보
- 75,597 조회
- 24 댓글
- 0 추천
-
목록
본문
0. 들어가며
지난 달에 ECDSA Wildcard 인증서 발급 받는 방법에 대해 글을 올렸습니다.
https://www.wsgvet.com/bbs/board.php?bo_table=home&wr_id=591
위 링크의 글과 90% 이상 겹치지만 RSA 인증서, ECDSA 인증서, 와일드카드 인증서 발급까지 처음부터 끝까지 정리해보겠습니다.
보통 letsencrypt 패키지를 많이 이용하지만, 저는 acme.sh를 이용하는 방법을 알려드리겠습니다.
1. acme.sh 설치하기
위 명령어로 root 계정으로 들어갑니다.
root 계정이 아니면 권한 문제가 생길 수 있습니다. 공식 매뉴얼에는 sudo 명령어를 추천하지 않습니다.
위 명령어로 설치할 수 있습니다. 만약에 안된다면
위 명령어로도 설치할 수 있습니다.
위와 같이 설치가 됩니다. 빨간색 글자가 나오는데, 무시해도 됩니다.
SSH 터미널(Putty 등)을 끄고, 다시 접속합니다.
SSH에 다시 접속하면 별다른 작업을 하지 않아도 root 계정으로 acme.sh 명령어를 바로 쓸 수 있습니다.
2. 클라우드플레어 API key 찾고 입력하기
https://blog.wsgvet.com/cloudflare-sign-in-and-change-nameserver/
우선 위와 같이 자신의 도메인 관리사이트에서 DNS 네임서버를 클라우드플레어로 바꿉니다.
클라우드플레어의 DNS 인증을 통한 인증서 발급이 가장 간편하고 좋다고 생각합니다.
하지만 아쉽게도 .cf, .ga, .gq, .ml .tk와 같은 Freenom에서 발급된 무료 도메인에 대해서는 DNS 인증을 지원하지 않습니다.
그 이유는 무료 도메인의 경우 대부분이 스팸 또는 테스트 용도로 쓰고 있기 때문이라고 생각합니다.
acme.sh의 경우 와일드카드 SSL 인증서를 받으려면 DNS 인증을 받아야 되는데, 무료도메인의 경우 불가능 하기 때문에
다른 DDNS 서비스를 사용하거나, 4번의 멀티도메인으로 발급 받기로 가면 됩니다!
무료도메인의 경우 LuaDNS API를 이용한 무료도메인 와일드카드 SSL 인증서 발급 받기(링크)를 추천드립니다.
.cf, .ga, .gq, .ml .tk 도메인이 아니라면 클라우드플레어 API 인증 받는 것이 추후에도 훨씬 편하기 때문에 추천드립니다.
https://dash.cloudflare.com/profile/api-tokens
위 링크로 들어가서 로그인 후 API keys를 찾습니다.
Keys used to access Cloudflare APIs.
Global API Key에서 View를 누릅니다.
비번 인증하고 사람 체크하면 키가 보입니다.
위와 같은 형식으로 나올텐데요.
SSH에서
위 명령어로 root로 로그인 후 인증서 발급 받을 폴더를 생성합니다.
위와 같이 넣어줍니다.
위와 같은 형식으로 이메일 주소도 넣습니다.
3. 인증서 발급받기
이제 인증서를 발급 받을 차례입니다.
위의 example.com 부분을 자신의 도메인 주소로 바꾸고 실행해봅니다.
실제 결과
위와 같이 잘 발급되고, 인증서도 원하는 위치로 이동된 것을 알 수 있습니다.
프라이빗 키 경로 : /etc/nginx/ssl/privkey.pem
chain 인증서 경로 : /etc/nginx/ssl/chain.pem
fullchain 인증서 : /etc/nginx/ssl/fullchain.pem
위 경로를 꼭 기억해두시는게 좋습니다.
Nginx나 apache에 들어가는 부분이기 때문입니다.
참고로 ECDSA 인증서를 발급 받고 싶으시면
위 명령어에서 --keylength ec-256 (prime256v1, ECDSA P-256) 또는 --keylength ec-384 (secp384r1, ECDSA P-384)를 넣어주면 됩니다.
위와 같이 실행하면 ECDSA P-256 인증서가 생성됩니다.
그리고 와일드카드 인증서를 발고 싶으시면 -d *.example.com을 넣으면 됩니다.
위와 같이 설정하면 example.com의 와일드카드 인증서(ECDSA P-256)가 발급됩니다.
4. cf, ga, gq, ml tk 무료 도메인에서 SSL 인증서 발급 받고 자동 갱신하기
위와 같은 도메인을 사용한다면 DNS 인증을 통해 인증서를 받기 어렵습니다.
하지만 Webroot 형식을 사용하면 현재 사용하거나, 사용하고 싶은 도메인을 모두 등록할 수 있습니다.
우선 위와 같이 root로 로그인 후 SSL 인증서가 저장될 폴더를 지정합니다.
위와 같이 webroot 방식으로 발급받으면 멀티도메인 거의 무제한(100개까지)으로 발급 받을 수 있습니다.
대신에 /var/www/wordpress 또는 /var/www/gnuboard 같은 현재 웹서버의 root 폴더를 지정해줘야 합니다.
발급 받고 싶은 도메인 주소도 -d example.com 형식으로 추가해주면 됩니다.
위와 같이 잘 발급되고, 원하는 위치에 인증서가 이동된 것을 확인할 수 있습니다.
프라이빗 키 경로 : /etc/nginx/ssl/privkey.pem
chain 인증서 경로 : /etc/nginx/ssl/chain.pem
fullchain 인증서 : /etc/nginx/ssl/fullchain.pem
위 경로를 꼭 기억해두시는게 좋습니다.
Nginx나 apache에 들어가는 부분이기 때문입니다.
참고로 ECDSA 인증서를 발급 받고 싶으시면
위 명령어에서 --keylength ec-256 (prime256v1, ECDSA P-256) 또는 --keylength ec-384 (secp384r1, ECDSA P-384)를 넣어주면 됩니다.
위와 같이 실행하면 ECDSA P-256 인증서가 생성됩니다.
5. 발급 리스트 확인하기
위 명령어를 넣으면
위와 같이 발급 정보가 나옵니다.
무료 도메인 멀티도메인의 경우
위와 같이 도메인이 모두 들어있고, 자동갱신도 되는 것을 확인할 수 있습니다.
6. 자동갱신 삭제하기
잘못 발급받았거나, 필요없을땐 삭제해야겠죠.
위 명령으로 자동갱신이 삭제됩니다. 아까 위에 있던 Main_Domain에 있는 것 1개만 넣으면 됩니다.
위와 같이 자동갱신이 삭제되었고, 해당 폴더는 삭제가 안되니, 스스로 삭제하라고 합니다. ㅎㅎ
--ecc 를 통해서 ECDSA 인증서를 발급 받았을 경우 --ecc 옵션을 줘야 삭제가 가능합니다.
위와 같이 삭제하면 됩니다.
위와 같이 삭제되었고, 인증서는 스스로 삭제하라고 합니다. ㅎㅎ
7. acme.sh 자동 업그레이드 하기
acme.sh도 개발자에 의해 업그레이되 되기 때문에 업그레이드를 시켜주는 것이 좋습니다.
위 명령어를 넣으면 됩니다.
위와 같이 나오면 성공입니다.
8. 자동갱신 확인하기
acme.sh로 인증서를 발급받았다면 자동으로 발급 후 60일 뒤에 갱신하게 됩니다.
별다른 작업이 필요없는 것이 큰 장점입니다.
위 명령어를 넣으면
위와 같이 매일 한번씩 시도하는 것을 알 수 있습니다.
9. Nginx에 적용하기
443포트를 받는 server{ } 에 넣어주시면 됩니다.
기존 인증서 경로 바로 밑에 넣어주셔도 되구요.
위와 같이 인증서의 경로룰 넣어주시면 됩니다.
-
등록일 2020.10.10그누보드 SMTP 외부메일 설정하는 방법댓글 26
-
등록일 2020.10.03그누보드5에 실시간 채팅 구축하기댓글 13
-
등록일 2020.09.26
-
등록일 2020.09.24도커로 메일서버 구축하기댓글 4
관련자료
-
서명우성짱의 NAS를 운영하고 있습니다.
저의 즐거움이 여러분의 즐거움이면 좋겠습니다.
djkiller님의 댓글
설치가 제대로 안된거 같은데 어디를 체크해봐야할까요?ㅠ
도메인은 호스팅KR에서 등록하였고, 네임서버는 클라우드로 변경하였고 vultr 에도 서버아이피와 도메인 연결후 네임서버 클라우드로 변경해놨습니다.
[Thu 09 Jun 2022 03:32:59 AM UTC] Using CA: https://acme.zerossl.com/v2/DV90
[Thu 09 Jun 2022 03:32:59 AM UTC] Create account key ok.
[Thu 09 Jun 2022 03:32:59 AM UTC] No EAB credentials found for ZeroSSL, let's get one
[Thu 09 Jun 2022 03:32:59 AM UTC] acme.sh is using ZeroSSL as default CA now.
[Thu 09 Jun 2022 03:32:59 AM UTC] Please update your account with an email address first.
[Thu 09 Jun 2022 03:32:59 AM UTC] acme.sh --register-account -m my@example.com
[Thu 09 Jun 2022 03:32:59 AM UTC] See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
[Thu 09 Jun 2022 03:32:59 AM UTC] Please add '--debug' or '--log' to check more details.
[Thu 09 Jun 2022 03:32:59 AM UTC] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh