Let's Encrypt DomainFactory

Một số gói lưu trữ chia sẻ với cPanel không cung cấp AutoSSL hoặc chỉ cung cấp chúng ở mức giá cao hơn. Kết quả: Bạn không thể cấp chứng chỉ Let's Encrypt miễn phí qua giao diện cPanel và tất cả các miền đều bị kẹt trên chứng chỉ tự ký. Trình duyệt hiển thị trang là “không an toàn”. Cách giải quyết: hãy tự mình lấy chứng chỉ bằng acme.sh và cài đặt nó qua cPanel UAPI - tự động gia hạn mà không cần AutoSSL.


HTTPS từ lâu đã là bắt buộc. Vì vậy, càng gây khó chịu hơn khi gói dịch vụ lưu trữ của bạn không cung cấp cách thuận tiện để có được chứng chỉ miễn phí. Điều này xảy ra thường xuyên hơn bạn nghĩ, ví dụ như với các gói dịch vụ giá rẻ hoặc sau khi thay đổi gói dịch vụ mà chứng chỉ đột nhiên không còn được bao gồm. Tuy nhiên, lỗ hổng này có thể được khắc phục một cách hiệu quả và vĩnh viễn chỉ với một vài dòng mã trong shell – quy trình đầy đủ được mô tả bên dưới.

1. Đăng nhập qua SSH

ssh -p <port> <user>@example.com

2. Cài đặt acme.sh

curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc

3. Đặt Let's Encrypt làm CA (Cơ quan cấp chứng chỉ).

acme.sh --set-default-ca --server letsencrypt

4. Cấp giấy chứng nhận

acme.sh --issue -d example.com -d www.example.com -w ~/public_html

5. Cài đặt vào cPanel

acme.sh --deploy -d example.com --deploy-hook cpanel_uapi

6. Kiểm tra

uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
     | openssl x509 -noout -issuer -dates

Hook ghi chứng chỉ vào vHost thích hợp thông qua UAPI. Cài đặt triển khai đã được lưu - từ giờ trở đi cron sẽ gia hạn và cài đặt mọi thứ một cách độc lập trước khi hết hạn. Nhà phát hành là “Let's Encrypt” và thời hạn sử dụng là khoảng 90 ngày trong tương lai. Thay vào đó, nếu chứng chỉ cũ, tự ký xuất hiện thì việc tải lại cứng trong trình duyệt thường có ích - chứng chỉ trước đó có thể được lưu trữ tạm thời.

Một số nhà cung cấp dịch vụ lưu trữ tự thiết lập hook cPanel riêng. install_ssl và đáp lại bằng một câu đại loại như thế này adminbin Cpanel/hooks2/...: exit 255. acme.sh vẫn báo cáo "được triển khai thành công" - và điều đó là chính xác. Trong trường hợp này, hook không thành công do bước tiếp theo (ví dụ: công việc đồng bộ hóa hoặc thông báo nội bộ từ máy chủ), không phải do cài đặt thực tế.

Đối với các tên miền có dấu umlaut, acme.sh lưu trữ chứng chỉ nội bộ dưới dạng Punycode (xn--…), trong khi trình so khớp tự động của hook so sánh dạng Unicode. Kết quả: “đã triển khai tới 0 trên 0 trang web” – không có gì được cài đặt. Điều khó khăn là acme.sh cũng báo “Thành công” ở đây nên lỗi rất dễ bị bỏ qua. Giải pháp: Làm việc trực tiếp với miền Punycode và tắt chế độ tự động:

python3 -c "import sys;print(sys.argv[1].encode('idna').decode())" hallöle.de
acme.sh --issue -d xn--hallle-zxa.de -d www.xn--hallle-zxa.de -w ~/public_html
export DEPLOY_CPANEL_AUTO_ENABLED='false'
acme.sh --deploy -d xn--hallle-zxa.de --deploy-hook cpanel_uapi

Với quyền truy cập SSH, bạn không cần AutoSSL: acme.sh sẽ cấp chứng chỉ, và chứng chỉ đó sẽ được cấp. cpanel_uapiTùy chọn -Hook sẽ cài đặt nó, và tác vụ định kỳ (cron job) đi kèm sẽ tự động cập nhật. Sau khi thiết lập xong, dịch vụ HTTPS miễn phí sẽ hoạt động liên tục mà không cần can thiệp. Những người đầu tư công sức ban đầu sẽ tiết kiệm được mọi thao tác gia hạn thủ công trong tương lai – và có thể mở rộng giải pháp tương tự cho bất kỳ tên miền nào khác trong cùng một tài khoản chỉ bằng một lệnh duy nhất.

Trở lại