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 |
---|---|---|
@ | A | 1.2.3.4 |
WWW | A | 1.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 name
và value
. 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ểu | Giá 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
Nếu tên miền example.com và www.example.com trỏ đến một document root nào đó ta có thể dùng cách sau:
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@hainh.me 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@hainh.me 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>