acme.sh 시작하기 Lets Encrypt SSL 클라이언트
이 페이지에서
- Lets Encrypt란?
- Acme.sh 사용법 및 기본 명령
- Acme.sh 설치
- SSL 인증서 발급
- 자동 DNS API 통합\n
- 설치 Lets encrypt SSL 인증서
- Lets Encrypt SSL 인증서 갱신
- acme.sh 업그레이드 방법
Acme.sh는 bash, dash 및 sh 셸과 호환되는 Shell(Unix 셸) 언어로만 작성된 간단하고 강력하며 사용하기 쉬운 ACME 프로토콜 클라이언트입니다. SSL 인증서의 설치, 갱신, 취소를 관리하는 데 도움이 됩니다. ACME 버전 1 및 ACME 버전 2 프로토콜과 ACME v2 와일드카드 인증서를 지원합니다. 의존성이 없는 ACME 클라이언트는 더욱 좋습니다. 실행하기 위해 전체 인터넷을 다운로드하고 설치할 필요가 없습니다. 이 도구에는 루트 또는 sudo 액세스가 필요하지 않지만 루트를 사용하는 것이 좋습니다.
Acme.sh는 도메인 소유권을 확인하는 데 사용할 수 있는 다음 확인 방법을 지원합니다.
- 웹루트 모드
- 독립형 모드\n
- 독립형 tls-alpn 모드\n
- 아파치 모드
- Nginx 모드
- DNS 모드
- DNS 별칭 모드
- 상태 비저장 모드
Lets Encrypt란?
Let's Encrypt(LE)는 전체 웹 암호화를 목표로 무료 자동 SSL/TLS 인증서를 제공하는 인증 기관(CA)입니다. 도메인 이름을 소유하고 있고 서버에 대한 셸 액세스 권한이 있는 경우 Lets Encrypt를 활용하여 무료로 신뢰할 수 있는 인증서를 얻을 수 있습니다. Lets 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 ~/.bashrcGitHub에서 설치:
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가지 작업을 수행합니다.
acme.sh
를 생성하고 홈 디렉토리($HOME
)에 복사:~/.acme.sh/
. 모든 인증서도 이 폴더에 저장됩니다.- 별칭 만들기:
acme.sh=~/.acme.sh/acme.sh
. - 매일 cron 작업을 생성하여 필요한 경우 인증서를 확인하고 갱신합니다.\n
고급 설치:
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 "" \
--accountkey ~/myaccount.key \
--accountconf ~/myaccount.conf \
--useragent "this is my client."모든 옵션을 설정할 필요는 없으며 원하는 항목만 설정하면 됩니다.
옵션 설명:
--home
은acme.sh
를 설치할 사용자 정의된 디렉토리입니다. 기본적으로~/.acme.sh에 설치됩니다.
--config-home
은 쓰기 가능한 폴더이며, acme.sh는 거기에 모든 파일(cert/keys, configs 포함)을 씁니다. 기본적으로--home.
에 있습니다.--cert-home
은 발급한 인증서를 저장하기 위한 사용자 지정 디렉터리입니다. 기본적으로--config-home
에 저장됩니다.--accountemail
은 Lets Encrypt에 계정을 등록하는 데 사용되는 이메일이며 여기에서 갱신 알림 이메일을 받게 됩니다. 기본값은 비어 있습니다.--accountkey
는 계정 개인 키를 저장하는 파일입니다. 기본적으로--config-home
에 저장됩니다.--useragent
는 Lets Encrypt로 전송하는 데 사용되는 사용자 에이전트 헤더 값입니다.\n
설치가 완료되면
acme.sh
버전을 확인하여 확인할 수 있습니다.acme.sh --version
# v2.8.1이 프로그램에는 사용할 수 있는 많은 명령과 매개변수가 있습니다. 도움을 받으려면 다음을 실행할 수 있습니다.
acme.sh --help
SSL 인증서 발급
이미 실행 중인 웹 서버가 있는 경우 웹루트 모드를 사용해야 합니다. 웹 루트 폴더에 대한 쓰기 액세스 권한이 필요합니다. 다음은 웹 루트 모드를 통해 인증서를 얻는 데 사용할 수 있는 몇 가지 예제 명령입니다.
단일 도메인 + Webroot 모드:
acme.sh --issue -d example.com --webroot /var/www/example.com
동일한 인증서 + Webroot 모드의 여러 도메인:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com
단일 도메인 ECC/ECDSA 인증서 + Webroot 모드:
acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256
동일한 ECC/ECDSA 인증서 + Webroot 모드의 여러 도메인:
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=""
acme.sh --issue -d example.com --dns dns_cf와일드카드 인증서 + CloudFlare DNS API 모드:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email=""
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cfDNS 제공업체가 API 액세스를 지원하지 않는 경우 TXT 레코드를 수동으로 추가할 수 있습니다.
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
아래와 같은 출력이 표시되어야 합니다.
Add the following txt record: Domain:_acme-challenge.example.com Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c Add the following txt record: Domain:_acme-challenge.www.example.com Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Please add those txt records to the domains. Waiting for the dns to take effect.
그런 다음
renew
인수를 사용하여 다시 실행하십시오.acme.sh --renew -d example.com
이것은 DNS 수동 모드이며 인증서를 자동으로 갱신할 수 없습니다. 인증서를 갱신할 때가 되면 직접 도메인에 새 TXT 레코드를 추가해야 합니다. 따라서 자동화할 수 있는 DNS API 모드를 대신 사용하세요.
Lets encrypt SSL 인증서 설치
인증서가 생성된 후 발급된 인증서를 디스크의 올바른 위치에 설치/복사할 수 있습니다. 이 명령을 사용하여 인증서를 대상 파일에 복사해야 합니다.
~/.acme.sh/
폴더의 인증서 파일을 사용하지 마십시오. 내부 전용이며 폴더 구조는 다음에서 변경될 수 있습니다. 미래. 설치하기 전에 인증서를 저장할 합리적인 디렉토리를 만드세요. 예를 들어 웹 서버에 따라/etc/letsencrypt
,/etc/nginx/ssl
또는/etc/apache2/ssl
일 수 있습니다. SSL 관련 항목을 저장하는 소프트웨어 및 자신의 기본 설정.아파치 예시:
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 구성 파일에 저장되므로 cron 작업이 갱신될 때 이 파일을 읽으므로 시스템에 맞게 설정해야 합니다. "reloadcmd"는 운영 체제 및 초기화 시스템에 따라 다릅니다.
Lets Encrypt SSL 인증서 갱신
인증서를 수동으로 갱신할 필요가 없습니다. 모든 인증서는 60일마다 자동으로 갱신됩니다.
그러나 인증서를 강제로 갱신할 수도 있습니다.
acme.sh --renew -d example.com --force
또는 ECC 인증서의 경우:
acme.sh --renew -d example.com --force --ecc
acme.sh를 업그레이드하는 방법
다음을 사용하여 acme.sh를 최신 코드로 업데이트할 수 있습니다.
acme.sh --upgrade
자동 업그레이드를 활성화할 수도 있습니다.
acme.sh --upgrade --auto-upgrade
그러면 acme.sh가 자동으로 최신 상태로 유지됩니다.
그게 다야. 문제가 발생하면 acme.sh 위키 페이지(https://github.com/Neilpang/acme.sh/wiki)를 방문하세요.
연결
- https://letsencrypt.org/