acme.sh: Shell script tự động cấp và gia hạn chứng chỉ số Let’s Encrypt

Published by Việt Coding on

Chào các bạn,

Hôm nay Việt Coding giới thiệu với các bạn acme.sh. Đây là một công cụ shell (Unix) script cực kỳ mạnh mẽ dùng để tự động xin cấp (issue) và gia hạn (renew) chứng chỉ số (SSL) của Let’s Encrypt.

1. SSL là gì ?

Chứng chỉ SSL (Secure Sockets Layer: “Tầng socket bảo mật”) là một loại chứng chỉ giúp mã hóa thông tin trên các thiết bị hoặc ứng dụng có hỗ trợ mã hóa bằng chứng chỉ SSL. Chứng chỉ SSL sẽ có hai phần gồm Private Key và Public Key, trong đó Public Key sẽ được cài ở ứng dụng đầu cuối mà trình duyệt hay các ứng dụng khác có thể truy cập đọc được, còn Private Key sẽ được cài đặt ở ứng dụng xử lý tiếp nhận dữ liệu, mục đích hoạt động giống như chìa khóa để giải mã các dữ liệu gửi đi từ thiết bị đầu cuối đã được mã hóa thông qua Public Key.

Muốn có chứng chỉ SSL bạn phải đăng ký với các tổ chức xác thực như Comodo, GeoTrust, Symantec,…với chi phí nhất định, chứng chỉ SSL cũng chia thành 3 loại như DV, OV hay EV tùy theo từng loại hình website của bạn. Bạn cần biết chi có thể tham khảo về SSL trên Wikipedia.(*)

2. Let’s Encrypt là gì ?

Let’s Encrypt là một tổ chức xác thực SSL giống như Comodo, GeoTrust, Symantec,… nhưng cái khác là họ là tổ chức phi lợi nhuận được thành lập với sự bảo trợ của những tổ chức lớn trên thế giới Cisco, Akamai, Mozilla, Facebook,…với mục đích là cung cấp chứng chỉ SSL miễn phí cho mọi người giúp mọi website đều được mã hóa, tạo nên một môi trường internet an toàn hơn.

Do đó, chứng chỉ SSL tại Let’s Encrypt sẽ không khác gì với các loại chứng chỉ SSL khác mà chỉ khác ở chỗ bạn phải gia hạn mỗi 90 ngày một lần.(*)

(*) Tham khảo từ thachpham.com.

3. Cấp và Gia hạn (Issue & Renew)

Để cấp và gia hạn SSL của Let’s Encrypt chúng ta cần thực hiện nhiều bước cũng “hơi hơi” phức tạp. Sử dụng shared hosting với các hosting control panel như cPanel, Direct Admin,… thì may mắn là nó hỗ trợ chỉ với vài cú nhấn chuột. Khá là dễ dàng với người dùng ít kinh nghiệm. Đối với VPS/Dedicated Server kết nối qua giao thức SSH với dòng lệnh thì thường sử dụng Certbot để xin cấp, gia hạn. Cá nhân Việt Coding thấy công cụ này cũng khó dùng và câu lệnh cũng khá khó nhớ. Thay vào đó nên dùng acme.sh (https://github.com/Neilpang/acme.sh).

4. Cài đặt acme.sh lên VPS/Dedicated Server:

Khá đơn giản chỉ với một câu lệnh:

`curl https://get.acme.sh | sh`

Tham khảo thêm các cách cài đặt nâng cao ở đây.

5. Cấp chứng chỉ số mới:

### Cấp mới
## Cấp cho 1 domain:
acme.sh --issue -d vietcoding.com -w /home/wwwroot/vietcoding.com

# or
acme.sh --issue -d vietcoding.com -w /home/username/public_html

# or
acme.sh --issue -d vietcoding.com -w /var/www/html

## Cấp cho nhiều domain
acme.sh --issue -d vietcoding.com -d www.vietcoding.com -d cp.vietcoding.com -w /home/wwwroot/vietcoding.com

Các bạn lưu ý ở dòng lệnh số 11, chỉ có duy nhất một certification được tạo ra là `vietcoding.com.cer, vietcoding.com.key`. Tuy nhiên, bạn vẫn dùng được cho toàn bộ các sub-domain khác (www, cp,...) nhé !

6. Gia hạn chứng chỉ số:

Bạn không cần phải gia hạn SSL bằng tay vì acme.sh khi cài vào đã tự động chạy để gia hạn SSL mỗi 60 ngày. Tuy nhiên, nếu bạn vẫn muốn gia hạn thì dùng lệnh sau:

`acme.sh –renew -d vietcoding.com –force`

để “ép” việc gia hạn ngay lập tức.

7. Ngừng gia hạn

Để ngừng gia hạn chứng chỉ số vì lý do nào đó, VD như ngừng sử dụng domain chẳng hạn, chúng ta dùng lệnh sau:

`acme.sh –remove -d vietcoding.com [–ecc]`

8. Nơi lưu trữ các chứng chỉ số:

Sau khi acme.sh issue/renew chứng chỉ số thành công, tất cả các chứng chỉ số được lưu trong `/home/your_user/.acme.sh`. Mỗi domain sẽ có một thư mục con. Vd như:

  • /home/your_user/.acme.sh/vietcoding.com
  • /home/your_user/.acme.sh/www.vietcoding.com

Trong mỗi thư mục domain có các tập tin `your_domain.cer, your_domain.key, ca.cer, fullchain.cer,…` để chúng ta sử dụng cho các Web Server như `nginx, Apache,…`

Như vậy, Việt Coding đã cùng các bạn lướt qua nhanh công cụ acme.sh để quản lý chứng chỉ số Let’s Encrypt cho domain. Nếu có góp ý gì, mời bạn comment ở cuối bài viết nhé !

Quảng cáo tài trợ


Việt Coding

Là một người đam mê lập trình, tôi vọc vạch đủ thứ liên quan đến lập trình cho thoả chí tò mò. Hiện làm chủ yếu ở mảng phát triển ứng dụng di động cho iOS và Android với React Native. Thỉnh thoảng vọc vạch mấy thứ liên quan đến Internet of Things như Smart Home. Đang nghịch mấy con Raspberry Pi và thấy nó cũng thú vị :)

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax