Bài viết hướng dẫn tạo chứng chỉ SSL miễn phí với dịch vụ Let's Encrypt bằng nhiều cách tiếp cận khác nhau.

Trong các ví dụ dưới đây, ta sẽ tạo SSL Certificate cho tên miền example.com, tên miền cấp 2 (sub-domain) của nó là www.example.com và tên miền wildcard là *.example.com.

Và ta đã cấu hình DNS cho A Record trỏ về máy chủ của chúng ta., cụ thể:

Tên (Name)KiểuĐịa chỉ IP
@A1.2.3.4
WWWA1.2.3.4
*A 1.2.3.4

Dùng DNS TXT (text record) của domain

Đây là cách duy nhất để tạo chứng chỉ cho tên miền wildcard. Dòng lệnh certbot như sau:

certbot certonly \
    --manual \
    --preferred-challenges dns \
    -d example.com \
    -d *.example.com

Trong quá trình thực thi lệnh trên, certbot sẽ trả về nội dung của 2 trường TXT, mỗi trường bao gồm một cặp namevalue. Ví dụ name là _acme-challenge.example.com. và value là gfj9Xq...Rg85nM.

Ta tạo 2 trường TXT tương ứng trong trình quản lý domain.

Tên (Name)KiểuGiá trị (Value)
_acme-challenge.example.com.TXT
_acme-challenge.example.com.TXT

Sau đó đợi một vài phút để DNS có hiệu lực rồi ấn Enter để tiếp tục quá trình cài đặt với cerbot.

Dùng file upload lên host

certbot certonly \
    --manual \
    --preferred-challenges http \
    -d example.com \
    -d www.example.com

Certbot sẽ trả về tên file và nội dung trong file. Sau khi tạo file, ta upload file này lên thư mục /.well-known/acme-challenge/ trên thư mục gốc của web root.

Dùng một thư mục web root bất kỳ

Giả sử ta đang có một web root ví dụ /var/www/html đã được cấu hình Virtual Host để truy cập được từ trình duyệt với giao thức HTTP.

WEBROOT="/var/www/html"

certbot certonly \
    --webroot -w "${WEBROOT}" \
    -d example.com \
    -d www.example.com

Dùng plugin Apache

Giả sử ta đã có Virtual Host cho bộ tên miền trên như ví dụ sau:

/etc/apache2/sites-available/example.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@icreativ.pro
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        AllowOverride FileInfo AuthConfig Limit
        Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Ta có thể dùng plugin apache để tự động tìm và cấu hình SSL một cách đơn giản như sau:

certbot --apache -d example.com -d www.example.com

certbot sẽ tạo chứng chỉ SSL và tạo thêm một file VirtualHost khác với suffix là -le-ssl dành riêng cho HTTPS. Như với ví dụ trên sẽ là /etc/apache2/sites-available/example-le-ssl.conf có nội dung như sau:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@icreativ.pro
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        AllowOverride FileInfo AuthConfig Limit
        Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>