순수하게 Shell(Unix Shell) 언어로 작성된 ACME 프로토콜 클라이언트입니다.
전체 ACME 프로토콜 구현.
ECDSA 인증서 지원
SAN 및 와일드카드 인증서 지원
간단하고 강력하며 사용하기 매우 쉽습니다. 배우는 데 3분밖에 걸리지 않습니다.
Bash, dash 및 sh와 호환됩니다.
Python에 대한 종속성 없이 순수하게 Shell로 작성되었습니다.
단 하나의 스크립트로 인증서를 자동으로 발급, 갱신 및 설치할 수 있습니다.
root/sudoer
액세스가 필요하지 않습니다.
도커 준비
IPv6 준비
갱신 또는 오류 등에 대한 크론 작업 알림
무료 인증서를 자동으로 발급하고 갱신하는 것은 아마도 easiest & smartest
쉘 스크립트일 것입니다.
위키: https://github.com/amesh-official/acme.sh/wiki
Docker 팬의 경우: acme.sh ? 도커
트위터: @neilpangxa
FreeBSD.org
ruby-china.org
프록시목스
pfsense
Loadbalancer.org
discourse.org
센민모드
스플린스
opnsense.org
CentOS 웹 패널
lnmp.org
더...
아니요 | 상태 | 플랫폼 |
---|---|---|
1 | 맥 OSX | |
2 | Windows(curl, openssl 및 crontab이 포함된 cygwin 포함) | |
3 | FreeBSD | |
4 | 솔라리스 | |
5 | 우분투 | |
6 | 해당 없음 | pfsense |
7 | 오픈BSD | |
8 | NetBSD | |
9 | DragonFlyBSD | |
10 | 옴니오스 | |
11 | 데비안 | |
12 | CentOS | |
13 | 오픈수세 | |
14 | Alpine Linux(컬 포함) | |
15 | 아치리눅스 | |
16 | 페도라 | |
17 | 칼리 리눅스 | |
18 | 오라클 리눅스 | |
19 | 마게이아 | |
10 | 젠투 리눅스 | |
11 | 클리어리눅스 | |
22 | ----- | 클라우드 리눅스 #111 |
23 | ----- | OpenWRT: 테스트를 거쳐 작동 중입니다. 위키 페이지 보기 |
24 | Proxmox: Proxmox VE Wiki를 참조하세요. 버전 4.x, 5.0, 5.1, 버전 5.2 이상 |
테스트 프로젝트를 확인하세요.
https://github.com/amesh-official/acmetest
ZeroSSL.com CA(기본값)
Letsencrypt.org CA
BuyPass.com CA
SSL.com CA
Google.com 공개 CA
페블 엄격 모드
기타 RFC8555 호환 CA
웹루트 모드
독립형 모드
독립형 tls-alpn 모드
아파치 모드
Nginx 모드
DNS 모드
DNS 별칭 모드
무상태 모드
이 프로젝트를 확인하세요: https://github.com/amesh-official/get.acme.sh
컬 https://get.acme.sh | sh -s 이메일[email protected]
또는:
wget -O - https://get.acme.sh | sh -s 이메일[email protected]
이 프로젝트를 복제하고 설치를 시작합니다.
자식 클론 https://github.com/amesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --install -m [email protected]
it is recommended
하지만 don't have to be root
.
고급 설치: https://github.com/amesh-official/acme.sh/wiki/How-to-install
설치 프로그램은 다음 3가지 작업을 수행합니다.
acme.sh
생성하여 홈 디렉토리( $HOME
): ~/.acme.sh/
에 복사합니다. 모든 인증서도 이 폴더에 저장됩니다.
acme.sh=~/.acme.sh/acme.sh
에 대한 별칭을 만듭니다.
필요한 경우 인증서를 확인하고 갱신하려면 일일 크론 작업을 생성하세요.
크론 입력 예:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
설치 후 별칭을 적용하려면 현재 터미널을 닫았다가 다시 열어야 합니다.
자, 이제 인증서를 발급할 준비가 되었습니다.
도움말 메시지 표시:
루트@v1:~# acme.sh -h
예 1: 단일 도메인.
acme.sh --issue -d example.com -w /home/wwwroot/example.com
또는:
acme.sh --issue -d example.com -w /home/username/public_html
또는:
acme.sh --issue -d example.com -w /var/www/html
예 2: 동일한 인증서에 여러 도메인이 있습니다.
acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
/home/wwwroot/example.com
, /home/username/public_html
또는 /var/www/html
매개변수는 웹 사이트 파일을 호스팅하는 웹 루트 폴더입니다. 이 폴더에 대한 write access
있어야 합니다 .
두 번째 인수 "example.com" 은 인증서를 발급하려는 기본 도메인입니다. 거기에 도메인이 하나 이상 있어야 합니다.
모든 도메인을 동일한 웹루트 디렉토리( /home/wwwroot/example.com
)로 지정하고 바인딩해야 합니다.
인증서는 ~/.acme.sh/example.com/
에 배치됩니다.
인증서는 60 일마다 자동으로 갱신됩니다.
추가 예: https://github.com/amesh-official/acme.sh/wiki/How-to-issue-a-cert
인증서가 생성된 후 Apache/Nginx 또는 다른 서버에 인증서를 설치/복사하고 싶을 수도 있습니다. 인증서를 대상 파일에 복사하려면 이 명령을 사용해야 합니다 . ~/.acme.sh/ 폴더에 있는 인증서 파일을 사용 하지 마십시오 . 내부 용도로만 사용되며 폴더 구조는 나중에 변경될 수 있습니다.
아파치 예:
acme.sh --install-cert -d example.com --cert-file /path/to/certfile/in/apache/cert.pem --key-file /path/to/keyfile/in/apache/key.pem --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem --reloadcmd "서비스 apache2 강제 다시 로드"
Nginx 예:
acme.sh --install-cert -d example.com --key-file /path/to/keyfile/in/nginx/key.pem --fullchain-파일 /path/to/fullchain/nginx/cert.pem --reloadcmd "서비스 nginx 강제 다시 로드"
도메인만 필수이고 다른 모든 매개변수는 선택사항입니다.
기존 파일의 소유권 및 권한 정보는 유지됩니다. 파일을 미리 생성하여 소유권과 권한을 정의할 수 있습니다.
인증서/키를 프로덕션 Apache 또는 Nginx 경로에 설치/복사합니다.
인증서는 기본적으로 60 일마다 갱신됩니다(구성 가능). 인증서가 갱신되면 Apache/Nginx 서비스는 service apache2 force-reload
또는 service nginx force-reload
명령을 통해 자동으로 다시 로드됩니다.
주의하세요. reloadcmd는 매우 중요합니다. 인증서는 자동으로 갱신될 수 있지만 올바른 'reloadcmd'가 없으면 인증서가 서버(예: nginx 또는 apache)에 플러시되지 않을 수 있으며, 그러면 웹 사이트에서 60일 이내에 갱신된 인증서를 표시할 수 없습니다.
(root/sudoer이거나 포트 80(TCP)에서 수신할 수 있는 권한이 필요함)
포트 80
(TCP)은 청취 할 수 있어야 합니다 . 그렇지 않으면 포트를 해제하고 다시 시도하라는 메시지가 표시됩니다.
acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
추가 예: https://github.com/amesh-official/acme.sh/wiki/How-to-issue-a-cert
(root/sudoer이거나 포트 443(TCP)에서 수신할 수 있는 권한이 필요함)
포트 443
(TCP)은 청취할 수 있어야 합니다 . 그렇지 않으면 포트를 해제하고 다시 시도하라는 메시지가 표시됩니다.
acme.sh --issue --alpn -d example.com -d www.example.com -d cp.example.com
추가 예: https://github.com/amesh-official/acme.sh/wiki/How-to-issue-a-cert
(Apache 서버와 상호작용해야 하므로 root/sudoer여야 함)
웹 서버를 실행하는 경우 Webroot mode
사용하는 것이 좋습니다.
특히, Apache 서버를 실행 중인 경우 Apache 모드를 대신 사용할 수 있습니다. 이 모드는 웹 루트 폴더에 파일을 쓰지 않습니다.
문자열 "apache"를 두 번째 인수로 설정하면 자동으로 Apache 플러그인이 사용됩니다.
acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
이 아파치 모드는 인증서 발급에만 사용되며, 아파치 구성 파일은 변경되지 않습니다. 인증서를 직접 사용하려면 웹사이트 구성 파일을 구성해야 합니다. 우리는 귀하의 아파치 서버를 엉망으로 만들고 싶지 않습니다. 걱정하지 마십시오.
추가 예: https://github.com/amesh-official/acme.sh/wiki/How-to-issue-a-cert
(Nginx 서버와 상호작용해야 하므로 root/sudoer여야 합니다)
웹 서버를 실행하는 경우 Webroot mode
사용하는 것이 좋습니다.
특히 nginx 서버를 실행하는 경우 nginx 모드를 대신 사용할 수 있습니다. 이 모드는 웹 루트 폴더에 파일을 쓰지 않습니다.
두 번째 인수로 문자열 "nginx"를 설정하면 됩니다.
도메인을 확인한 다음 nginx 구성을 원래 버전으로 복원하도록 nginx 서버를 자동으로 구성합니다.
따라서 구성이 변경되지 않습니다.
acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
이 nginx 모드는 인증서 발급에만 사용되며 nginx 구성 파일은 변경되지 않습니다. 인증서를 직접 사용하려면 웹사이트 구성 파일을 구성해야 합니다. 우리는 귀하의 nginx 서버를 엉망으로 만들고 싶지 않습니다. 걱정하지 마십시오.
추가 예: https://github.com/amesh-official/acme.sh/wiki/How-to-issue-a-cert
귀하의 DNS 공급자가 API 액세스를 지원하는 경우 해당 API를 사용하여 자동으로 인증서를 발급할 수 있습니다.
수동으로 아무것도 할 필요가 없습니다!
https://github.com/amesh-official/acme.sh/wiki/dnsapi
먼저 https://github.com/amesh-official/acme.sh/wiki/dns-manual-mode를 참조하세요.
DNS 공급자가 API 액세스를 지원하지 않는 경우 txt 레코드를 직접 추가할 수 있습니다.
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
아래와 같은 출력이 나타나야 합니다.
다음 txt 레코드를 추가합니다. 도메인:_acme-challenge.example.com 전송 값:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c 다음 txt 레코드를 추가합니다. 도메인:_acme-challenge.www.example.com 텍스트 값:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 해당 txt 레코드를 도메인에 추가하세요. DNS가 적용되기를 기다리고 있습니다.
그런 다음 renew
인수를 사용하여 다시 실행하십시오.
acme.sh --renew -d example.com
알았어, 끝났어.
주의하세요. 이것은 DNS 수동 모드이므로 자동으로 갱신할 수 없습니다. 인증서를 갱신할 때 직접 도메인에 새 txt 레코드를 추가해야 합니다.
대신 DNS API 모드를 사용하세요.
접두사 ec-
사용하여 keylength
매개변수를 설정하면 됩니다.
예를 들어:
acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
위의 keylength
매개변수를 살펴보세요.
유효한 값은 다음과 같습니다.
ec-256(prime256v1, "ECDSA P-256", 기본 키 유형)
ec-384(secp384r1, "ECDSA P-384")
ec-521(secp521r1, "ECDSA P-521", 아직 Let's Encrypt에서 지원되지 않음)
2048년(RSA2048)
3072(RSA3072)
4096(RSA4096)
간단합니다. 와일드카드 도메인을 -d
매개변수로 지정하면 됩니다.
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
아니요, 인증서를 수동으로 갱신할 필요가 없습니다. 모든 인증서는 60 일마다 자동으로 갱신됩니다.
그러나 인증서를 강제로 갱신할 수도 있습니다.
acme.sh --renew -d example.com --force
또는 ECC 인증서의 경우:
acme.sh --renew -d example.com --force --ecc
인증서 갱신을 중지하려면 다음을 실행하여 갱신 목록에서 인증서를 제거할 수 있습니다.
acme.sh --remove -d example.com [--ecc]
인증서/키 파일은 디스크에서 제거되지 않습니다.
해당 디렉토리(예: ~/.acme.sh/example.com
)를 직접 제거할 수 있습니다.
acme.sh
업그레이드하는 방법acme.sh는 지속적으로 개발 중이므로 최신 코드를 사용하는 것이 좋습니다.
acme.sh를 최신 코드로 업데이트할 수 있습니다.
acme.sh --업그레이드
자동 업그레이드를 활성화할 수도 있습니다.
acme.sh --upgrade --자동 업그레이드
그러면 acme.sh가 자동으로 최신 상태로 유지됩니다.
자동 업그레이드 비활성화:
acme.sh --upgrade --자동 업그레이드 0
https://github.com/amesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
https://github.com/amesh-official/acme.sh/wiki/notify
쉘을 사용하여 ACME 언어를 "Let's Encrypt"로 직접 말하세요.
할 일:
Acme-tiny: https://github.com/diafygi/acme-tiny
ACME 프로토콜: https://github.com/ietf-wg-acme/acme
이 프로젝트는 기여하는 모든 사람들 덕분에 존재합니다.
재정적인 기부자가 되어 지역 사회를 유지하는 데 도움을 주세요. [기여하다]
귀하의 조직과 함께 이 프로젝트를 지원하십시오. 귀하의 로고가 귀하의 웹사이트 링크와 함께 여기에 표시됩니다. [기여하다]
라이센스는 GPLv3입니다
별표표시하고 포크해 주세요.
문제 및 풀 요청을 환영합니다.
당신의 기부가 acme.sh를 더 좋게 만듭니다:
페이팔/알리페이(支付宝)/위챗(微信): https://donate.acme.sh/
기부 목록