Acme.sh là một trình khách giao thứcACME đơn giản, mạnh mẽ và dễ sử dụng được viết hoàn toàn bằng ngôn ngữ Shell (Unix shell), tương thích với các shell bash, dash và sh. Nó giúpquản lý việc cài đặt, gia hạn, thu hồi chứng chỉ SSL. Nó hỗ trợ các giao thức ACME phiên bản 1 và ACME phiên bản 2, cũng như các chứng chỉ đại diện ACME v2. Là một trình khách ACME không phụ thuộc khiến nó thậm chí còn tốt hơn. Bạn không cần phải tải xuống và cài đặt toàn bộ internet để chạy nó. Công cụ này không yêu cầu quyền truy cập root hoặc sudo, nhưng bạn nên sử dụng root.
Acme.sh hỗ trợ các phương pháp xác thực sau mà bạn có thể sử dụng để xác nhận quyền sở hữu tên miền:
Cài đặt từ web qua
hoặc
Cài đặt từ GitHub:
hoặc
Git clone và cài đặt:
Trình cài đặt sẽ thực hiện 3 hành động:
Bạn không cần thiết lập tất cả các tùy chọn, chỉ cần thiết lập những tùy chọn bạn quan tâm.
Giải thích các tùy chọn:
Chương trình có rất nhiều lệnh và tham số có thể sử dụng. Để được trợ giúp, bạn có thể chạy:
Một miền đơn + chế độ Webroot:
Nhiều miền trong cùng một chứng chỉ+ Chế độ Webroot:
Một miền đơn ECC/ECDSA chứng chỉ + chế độ Webroot:
Nhiều miền trong cùng một chứng chỉ ECC/ECDSA+ Chế độ Webroot:
Các giá trị hợp lệ cho
Nếu bạn không có máy chủ web, có thể bạn đang sử dụng máy chủ SMTP hoặc FTP, cổng 80 còn trống, thì bạn có thể sử dụng chế độ độc lập. Nếu bạn muốn sử dụng chế độ này, trước tiên bạn cần cài đặt công cụ socat.
Một tên miền + Chế độ độc lập:
Nhiều tên miền trong cùng một chứng chỉ+Chế độ độc lập:
Nếu bạn không có máy chủ web, có thể bạn đang sử dụng máy chủ SMTP hoặc FTP, cổng 443đang trống. Bạn có thể sử dụng chế độ standaloneTLSALPN. Acme.sh có một máy chủ web TLS độc lập tích hợp sẵn, nó có thể lắng nghe tại cổng 443 để cấp chứng chỉ.
Một tên miền + Chế độ ALPN TLS độc lập:
Nhiều tên miền trong cùng một chứng chỉ+ Chế độ ALPN TLS độc lập:
Chế độ API DNS của CloudFlare + tên miền đơn:
Wildcardcert+ Chế độ API DNS của CloudFlare:
Nếu nhà cung cấp DNS của bạn không hỗ trợ bất kỳ quyền truy cập API nào, bạn có thể thêm bản ghi TXT theo cách thủ công.
Bạn sẽ nhận được kết quả như bên dưới:
Sau đó chỉ cần chạy lại với đối số
Hãy nhớ rằng đây là chế độ thủ công của DNS và bạn không thể tự động gia hạn chứng chỉ của mình. Bạn sẽ phải tự tay thêm một bản ghi TXT mới vào miền của mình khi đến lúc gia hạn chứng chỉ. Thay vào đó, hãy sử dụng chế độ DNSAPI vì nó có thể tự động hóa.
Ví dụ về Apache:
Ví dụ về Nginx:
Các tham số được lưu trữ trong tệp cấu hình .acme.sh, vì vậy bạn cần phải thiết lập đúng cho hệ thống của mình vì tệp này được đọc khi tác vụ cron chạy gia hạn. "reloadcmd" phụ thuộc vào hệ điều hành và hệ thống init của bạn.
Tuy nhiên, bạn cũng có thể buộc gia hạn chứng chỉ:
hoặc, đối với chứng chỉ ECC:
Bạn cũng có thể bật tính năng nâng cấp tự động:
Sau đó, acme.sh sẽ được cập nhật tự động.
Vậy là xong. Nếu bạn gặp khó khăn ở bất kỳ điều gì, hãy truy cập trang wiki acme.sh tạihttps://github.com/Neilpang/acme.sh/wiki.
Acme.sh hỗ trợ các phương pháp xác thực sau mà bạn có thể sử dụng để xác nhận quyền sở hữu tên miền:
- Chế độ Webroot
- Chế độ độc lập
- Chế độ tls-alpn độc lập
- Chế độ Apache
- Chế độ Nginx
- Chế độ DNS
- Chế độ bí danh DNS
- Chế độ không trạng thái
Let's Encrypt là gì
Let's Encrypt (LE) là một cơ quan cấp chứng chỉ (CA) cung cấp chứng chỉ SSL/TLS miễn phí và tự động, với mục tiêu mã hóa toàn bộ trang web. Nếu bạn sở hữu một tên miền và có quyền truy cập shell vào máy chủ của mình, bạn có thểsử dụngLet's Encryptđể lấy chứng chỉ đáng tin cậy màkhông mất phí. Let's Encrypt có thể cấp chứng chỉ SAN cho tối đa 100 tên máy chủvà chứng chỉ đại diện. Tất cả các chứng chỉ đều có hiệu lực trong thời hạn 90 ngày.Cách sử dụng Acme.sh và các lệnh cơ bản
Trong phần này, tôi sẽ giới thiệu một số lệnh và tùy chọn phổ biến nhất của acme.sh.Cài đặt Acme.sh
Bạn có một số tùy chọn để cài đặt acme.sh.Cài đặt từ web qua
curl
hoặc wget
:
Mã:
curl https://get.acme.sh | sh
source ~/.bashrc
Mã:
wget -O - https://get.acme.sh | sh
source ~/.bashrc
Mã:
curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh
Mã:
wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh
Mã:
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrc
- Tạo và sao chép
acme.sh
vào thư mục home của bạn ($HOME
):~/.acme.sh/
. Tất cả các chứng chỉ cũng sẽ được đặt trong thư mục này. - Tạo bí danh cho:
acme.sh=~/.acme.sh/acme.sh
. - Tạo công việc cron hàng ngày để kiểm tra và gia hạn các chứng chỉ nếu cần.
Mã:
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 "[emailprotected]" \
--accountkey ~/myaccount.key \
--accountconf ~/myaccount.conf \
--useragent "đây là máy khách của tôi."
Giải thích các tùy chọn:
-
--home
là một thư mục tùy chỉnh để cài đặtacme.sh
. Theo mặc định, nó cài đặt vào~/.acme.sh.
-
--config-home
là một thư mục có thể ghi, acme.sh sẽ ghi tất cả các tệp (bao gồm cert/keys, configs) vào đó. Theo mặc định, nó nằm trong--home.
-
--cert-home
là một thư mục tùy chỉnh để lưu các chứng chỉ bạn cấp. Theo mặc định, nó được lưu trong--config-home
. -
--accountemail
là email được sử dụng để đăng ký tài khoản Let's Encrypt, bạn sẽ nhận được email thông báo gia hạn tại đây. Mặc định là trống. -
--accountkey
là tệp lưu khóa riêng tư của tài khoản. Theo mặc định, tệp này được lưu trong--config-home
. -
--useragent
là giá trị tiêu đề user-agent được sử dụng để gửi đến Let's Encrypt.
acme.sh
version:
Mã:
acme.sh --version
# v2.8.1
Mã:
acme.sh --help
Cấp chứng chỉ SSL
Nếu bạn đã có máy chủ web đang chạy, bạn nên sử dụng chế độ webroot. Bạn sẽ cần quyền ghi vào thư mục gốc web.Sau đây là một số lệnh ví dụ có thể được sử dụng để lấy chứng chỉ qua chế độ webroot:Một miền đơn + chế độ Webroot:
Mã:
acme.sh --issue -d example.com --webroot /var/www/example.com
Mã:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com
Mã:
acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256
Mã:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256
--keylength
là: 2048 (mặc định), 3072, 4096, 8192 hoặc ec-256, ec-384.Nếu bạn không có máy chủ web, có thể bạn đang sử dụng máy chủ SMTP hoặc FTP, cổng 80 còn trống, thì bạn có thể sử dụng chế độ độc lập. Nếu bạn muốn sử dụng chế độ này, trước tiên bạn cần cài đặt công cụ socat.
Một tên miền + Chế độ độc lập:
Mã:
acme.sh --issue -d example.com --standalone
Mã:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone
Một tên miền + Chế độ ALPN TLS độc lập:
Mã:
acme.sh --issue -d example.com --alpn
Mã:
acme.sh --issue -d example.com -d www.example.com --alpn
Tích hợp API DNS tự động
Nếu nhà cung cấp DNS của bạn có API, acme.shcó thể sử dụng API để tự động thêm bản ghi TXT DNS cho bạn. Chứng chỉ của bạn sẽ được tự động cấp và gia hạn. Không cần thực hiện thao tác thủ công. Trước khi yêu cầu chứng chỉ, hãy cấu hình khóa API và Email của bạn. Hiện tại acme.sh có tích hợp DNS tự động với khoảng 60 nhà cung cấp DNS gốc và có thể sử dụng công cụ Lexicon cho những nhà cung cấp không được hỗ trợ gốc.Chế độ API DNS của CloudFlare + tên miền đơn:
Mã:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[emailprotected]"
acme.sh --issue -d example.com --dns dns_cf
Mã:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[emailprotected]"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
Mã:
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
Mã:
Thêm bản ghi txt sau:Domain:_acme-challenge.example.comGiá trị txt:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-cThêm bản ghi txt sau:Domain:_acme-challenge.www.example.comGiá trị txt:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxVui lòng thêm các bản ghi txt đó vào miền. Đang chờ để DNS có hiệu lực.
renew
:
Mã:
acme.sh --renew -d example.com
Cài đặt Let's encrypt SSL cert
Sau khi chứng chỉ được tạo, bạn có thể muốn cài đặt/sao chép chứng chỉ đã cấp vào đúng vị trí trên đĩa. Bạnphải sử dụng lệnh này để sao chép các chứng chỉ vào các tệp đích,không sử dụng các tệp chứng chỉ trong thư mục~/.acme.sh/
, chúng chỉ dành cho mục đích sử dụng nội bộ, cấu trúc thư mục có thể thay đổi trong tương lai. Trước khi cài đặt, hãy tạo một thư mục hợp lý để lưu trữ các chứng chỉ của bạn. Ví dụ, đó có thể là /etc/letsencrypt
, /etc/nginx/ssl
hoặc /etc/apache2/ssl
, tùy thuộc vào phần mềm máy chủ web của bạn và sở thích riêng của bạn để lưu trữ các nội dung liên quan đến SSL.Ví dụ về Apache:
Mã:
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"
Mã:
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"
Gia hạn chứng chỉ SSL Let's Encrypt
Bạn không cần phải gia hạn chứng chỉ theo cách thủ công. Tất cả các chứng chỉ sẽ được tự động gia hạn sau mỗi 60 ngày.Tuy nhiên, bạn cũng có thể buộc gia hạn chứng chỉ:
Mã:
acme.sh --renew -d example.com --force
Mã:
acme.sh --renew -d example.com --force --ecc
Cách nâng cấp acme.sh
Bạn có thể cập nhật acme.sh lên mã mới nhất bằng:
Mã:
acme.sh --upgrade
Mã:
acme.sh --upgrade --auto-upgrade
Vậy là xong. Nếu bạn gặp khó khăn ở bất kỳ điều gì, hãy truy cập trang wiki acme.sh tạihttps://github.com/Neilpang/acme.sh/wiki.