SSL 인증서 · 5 min read · Feb 04, 2026

acme.sh Let's Encrypt SSL 클라이언트 시작하기

Acme.sh는 순수하게 Shell (Unix shell) 언어로 작성된 간단하고 강력하며 사용하기 쉬운 ACME 프로토콜 클라이언트로, bash, dash 및 sh 셸과 호환됩니다. SSL 인증서의 설치, 갱신 및 폐기를 관리하는 데 도움을 줍니다. ACME 버전 1 및 ACME 버전 2 프로토콜과 ACME v2 와일드카드 인증서를 지원합니다. 제로 의존성 ACME 클라이언트인 덕분에 더욱 유용합니다. 작동시키기 위해 전체 인터넷을 다운로드하고 설치할 필요가 없습니다. 이 도구는 루트 또는 sudo 접근이 필요하지 않지만 루트를 사용하는 것이 권장됩니다.

Acme.sh는 도메인 소유권을 확인하는 데 사용할 수 있는 다음의 검증 방법을 지원합니다:

  • 웹 루트 모드
  • 독립형 모드
  • 독립형 tls-alpn 모드
  • 아파치 모드
  • Nginx 모드
  • DNS 모드
  • DNS 별칭 모드
  • 상태 비저장 모드

Let’s Encrypt란?

Let’s Encrypt (LE)는 전체 웹을 암호화하는 것을 목표로 무료 및 자동화된 SSL/TLS 인증서를 제공하는 인증 기관(CA)입니다. 도메인 이름을 소유하고 서버에 대한 셸 접근이 있는 경우, Let’s Encrypt를 활용하여 비용 없이 신뢰할 수 있는 인증서를 얻을 수 있습니다. Let’s Encrypt는 최대 100개의 호스트 이름에 대한 SAN 인증서와 와일드카드 인증서를 발급할 수 있습니다. 모든 인증서는 90일 동안 유효합니다.

Acme.sh 사용법 및 기본 명령어

이 섹션에서는 가장 일반적인 acme.sh 명령어 및 옵션을 보여드리겠습니다.

Acme.sh 설치

acme.sh를 설치할 수 있는 몇 가지 옵션이 있습니다.

curl 또는 wget을 통한 웹에서 설치:

curl https://get.acme.sh | sh  
source ~/.bashrc

또는

wget -O - https://get.acme.sh | sh  
source ~/.bashrc

GitHub에서 설치:

curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

또는

wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

Git 클론 및 설치:

git clone https://github.com/Neilpang/acme.sh.git  
cd ./acme.sh  
./acme.sh --install  
source ~/.bashrc

설치 프로그램은 3가지 작업을 수행합니다:

  1. acme.sh를 홈 디렉토리($HOME): ~/.acme.sh/에 생성하고 복사합니다. 모든 인증서도 이 폴더에 배치됩니다.
  2. acme.sh=~/.acme.sh/acme.sh에 대한 별칭을 생성합니다.
  3. 필요 시 인증서를 확인하고 갱신하기 위한 매일 크론 작업을 생성합니다.

고급 설치:

git clone https://github.com/Neilpang/acme.sh.git  
cd acme.sh  
./acme.sh --install \  
          --home ~/myacme \  
          --config-home ~/myacme/data \  
          --cert-home ~/mycerts \  
          --accountemail "[email protected]" \  
          --accountkey ~/myaccount.key \  
          --accountconf ~/myaccount.conf \  
          --useragent "this is my client."

모든 옵션을 설정할 필요는 없으며, 관심 있는 옵션만 설정하면 됩니다.

옵션 설명:

  • --homeacme.sh를 설치할 사용자 지정 디렉토리입니다. 기본적으로 ~/.acme.sh에 설치됩니다.
  • --config-home은 쓰기 가능한 폴더로, acme.sh는 모든 파일(인증서/키, 구성)을 이곳에 작성합니다. 기본적으로 --home에 있습니다.
  • --cert-home은 발급한 인증서를 저장할 사용자 지정 디렉토리입니다. 기본적으로 --config-home에 저장됩니다.
  • --accountemail은 Let’s Encrypt에 계정을 등록하는 데 사용되는 이메일로, 갱신 알림 이메일을 이곳에서 받게 됩니다. 기본값은 비어 있습니다.
  • --accountkey는 계정 개인 키를 저장하는 파일입니다. 기본적으로 --config-home에 저장됩니다.
  • --useragent는 Let’s Encrypt에 전송되는 사용자 에이전트 헤더 값입니다.

설치가 완료되면 acme.sh 버전을 확인하여 검증할 수 있습니다:

acme.sh --version  
# v2.8.1

프로그램에는 사용할 수 있는 많은 명령어와 매개변수가 있습니다. 도움을 받으려면 다음을 실행할 수 있습니다:

acme.sh --help

SSL 인증서 발급

웹 서버가 이미 실행 중인 경우, 웹 루트 모드를 사용해야 합니다. 웹 루트 폴더에 대한 쓰기 접근이 필요합니다. 웹 루트 모드를 통해 인증서를 얻기 위해 사용할 수 있는 몇 가지 예제 명령어는 다음과 같습니다:

단일 도메인 + 웹 루트 모드:

acme.sh --issue -d example.com --webroot /var/www/example.com  

같은 인증서의 여러 도메인 + 웹 루트 모드:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com

단일 도메인 ECC/ECDSA 인증서 + 웹 루트 모드:

acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

같은 ECC/ECDSA 인증서의 여러 도메인 + 웹 루트 모드:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256

--keylength의 유효한 값은: 2048 (기본값), 3072, 4096, 8192 또는 ec-256, ec-384입니다.

웹 서버가 없는 경우, SMTP 또는 FTP 서버에 있을 수 있으며, 80 포트가 비어 있다면 독립형 모드를 사용할 수 있습니다. 이 모드를 사용하려면 먼저 socat 도구를 설치해야 합니다.

단일 도메인 + 독립형 모드:

acme.sh --issue -d example.com --standalone  

같은 인증서의 여러 도메인 + 독립형 모드:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone  

웹 서버가 없는 경우, SMTP 또는 FTP 서버에 있을 수 있으며, 443 포트가 비어 있다면 독립형 TLS ALPN 모드를 사용할 수 있습니다. Acme.sh는 내장된 독립형 TLS 웹 서버가 있으며, 인증서를 발급하기 위해 443 포트에서 수신 대기할 수 있습니다.

단일 도메인 + 독립형 TLS ALPN 모드:

acme.sh --issue -d example.com --alpn

같은 인증서의 여러 도메인 + 독립형 TLS ALPN 모드:

acme.sh --issue -d example.com -d www.example.com --alpn

자동 DNS API 통합

DNS 공급자가 API를 제공하는 경우, acme.sh는 API를 사용하여 DNS TXT 레코드를 자동으로 추가할 수 있습니다. 인증서는 자동으로 발급되고 갱신됩니다. 수동 작업이 필요하지 않습니다. 인증서를 요청하기 전에 API 키와 이메일을 구성하십시오. 현재 acme.sh는 약 60개의 DNS 공급자와 기본적으로 자동 DNS 통합을 지원하며, 기본적으로 지원되지 않는 공급자에 대해서는 Lexicon 도구를 사용할 수 있습니다.

단일 도메인 + CloudFlare DNS API 모드:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"  
export CF_Email="[email protected]"  
acme.sh --issue -d example.com --dns dns_cf  

와일드카드 인증서 + CloudFlare DNS API 모드:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"  
export CF_Email="[email protected]"  
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

DNS 공급자가 API 접근을 지원하지 않는 경우, TXT 레코드를 수동으로 추가할 수 있습니다.

acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com  

다음과 같은 출력을 받아야 합니다:

다음 txt 레코드를 추가하십시오:
도메인:_acme-challenge.example.com
Txt 값:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

다음 txt 레코드를 추가하십시오:
도메인:_acme-challenge.www.example.com
Txt 값:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

이 txt 레코드를 도메인에 추가하십시오. DNS가 적용될 때까지 기다립니다.

그런 다음 renew 인수로 다시 실행하십시오:

acme.sh --renew -d example.com

이것은 DNS 수동 모드이며 인증서를 자동으로 갱신할 수 없음을 명심하십시오. 인증서를 갱신할 때마다 수동으로 도메인에 새로운 TXT 레코드를 추가해야 합니다. 따라서 자동화할 수 있는 DNS API 모드를 사용하는 것이 좋습니다.

Let’s Encrypt SSL 인증서 설치

인증서가 생성된 후, 발급된 인증서를 디스크의 올바른 위치에 설치/복사하려고 할 것입니다. 인증서를 대상 파일로 복사하려면 이 명령어를 사용해야 하며, ~/.acme.sh/ 폴더의 인증서 파일을 사용하지 마십시오. 이 파일들은 내부 용도로만 사용되며, 폴더 구조는 미래에 변경될 수 있습니다. 설치 전에 인증서를 저장할 적절한 디렉토리를 생성하십시오. 예를 들어 /etc/letsencrypt, /etc/nginx/ssl 또는 /etc/apache2/ssl 등이 될 수 있으며, 이는 웹 서버 소프트웨어와 SSL 관련 자료를 저장하는 개인 선호도에 따라 다릅니다.

Apache 예:

acme.sh --install-cert \  
        --domain example.com \   
        --cert-file /path/to/cert/cert.pem \  
        --key-file /path/to/keyfile/key.pem \  
        --fullchain-file /path/to/fullchain/fullchain.pem \  
        --reloadcmd "sudo systemctl reload apache2.service"

Nginx 예:

acme.sh --install-cert \  
        --domain example.com \   
        --cert-file /path/to/cert/cert.pem \  
        --key-file /path/to/keyfile/key.pem \  
        --fullchain-file /path/to/fullchain/fullchain.pem \  
        --reloadcmd "sudo systemctl reload nginx.service"

매개변수는 .acme.sh 구성 파일에 저장되므로, 이 파일은 크론 작업이 갱신을 실행할 때 읽히므로 시스템에 맞게 올바르게 설정해야 합니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.