Mục lục
Let’s Encrypt là gì?
Kể từ 2014, Google đã chính thức ưu tiên các website hỗ trợ giao thức HTTPS trên kết quả tìm kiếm. Để giảm nguy cơ giả danh, đảm bảo an toàn cho người dùng, tích hợp chứng chỉ SSL vào một website có giao thức HTTPS là ưu tiên hàng đầu để có thể chứng thực và nâng hạng website trên các bộ máy tìm kiếm.
Để có chứng chỉ SSL, bạn phải đăng ký với các tổ chức xác thực với 3 loại: DV, OV và EV tùy theo từng loại hình website của bạn.
Những tổ chức cấp và xác thực chứng chỉ như Comodo, GeoTrust, Symantec,… đều có có thu phí. Vậy, có thể chứng chỉ SSL miễn phí không?
Let’s Encrypt là một nhà cung cấp chứng chỉ số SSL (Certificate Authority) hoàn toàn miễn phí nhằm cung cấp chứng chỉ SSL cho cộng đồng nói chung. Đây là một dự án của Internet Research Group, một hiệp hội về dịch vụ cộng đồng.
Let’s Encrypt được tài trợ bởi nhiều công ty bao gồm Google, Facebook, Sucuri, Mozilla, Cisco, v.v…
Mô hình Lab
Trong bài viết này, Zhost sẽ sử dụng một máy chủ CentOS 7 có IP Public: 103.21.150.182 cài đặt Apache/Nginx Web server.
Tên miền: test.zhost.vn đã trỏ bản ghi A về IP của Web Server.
Cài đặt và cấu hình Let’s Encrypt sử dụng cho Apache trên CentOS 7
Cài đặt Apache và cấu hình Virtual Host
Các bước cài đăt Apache và cấu hình Virtual Host bạn có thể tham khảo tại bài viết: Cấu hình Virtual Host cho Apache (httpd)
Ở đây tôi sẽ cấu hình một Website đơn giản chạy trên tên miền test.zhost.vn.
Thử truy cập vào website bằng tên miền thông qua http (port 80). http://test.zhost.vn
Cài đặt Certbot và mod_ssl module cho Apache
Chúng ta cần cài đặt Certbot và kích hoạt mod_ssl module cho Apache trên máy chủ.
Certbot là một công cụ đơn giản và dễ sử dụng giúp đơn giản hóa việc tạo chứng chỉ và cấu hình các Service web sử dụng SSL.
Theo mặc định, gói Certbot không khả dụng trong kho lưu trữ hệ điều hành mặc định của CentOS 7. Chúng ta cần kích hoạt kho lưu trữ EPEL, sau đó cài đặt Certbot.
Cài đặt EPEL:
yum install epel-release -y
Cài đặt tất cả certbot và mod_ssl bằng lệnh sau:
yum install certbot python2-certbot-apache mod_ssl -y
Tạo chứng chỉ SSL và cấu hình hoạt động trên Apache
Chạy lệnh sau để tạo chứng chỉ SSL cho miền của bạn:
certbot --apache -d test.zhost.vn
Hoặc bạn cũng có thể tạo ra một chứng chỉ mà có thể sử dụng cho nhiều tên miền bằng cách thêm option -d:
certbot --apache -d domain.com -d www.domain.com -d domain2.com -d test.domain2.com
Nhập các tuỳ chọn như phía dưới:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] <-- Nhập email của quản trị viên Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A <-- Nhập A để đồng ý - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N <-- Nhập Y để đồng ý chia sẻ email để nhận tin tức hoặc N để từ chối Starting new HTTPS connection (1): supporters.eff.org Obtaining a new certificate Performing the following challenges: http-01 challenge for domain.com Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/httpd/sites-available/test.zhost.vn-le-ssl.conf Deploying Certificate to VirtualHost /etc/httpd/sites-available/test.zhost.vn-le-ssl.conf Enabling site /etc/httpd/sites-available/test.zhost.vn-le-ssl.conf by adding Include to root configuration
Tiếp theo hãy chọn tuỳ chọn 1 hoặc 2 để tiếp tục. trong đó:
- 1 Là sẽ chỉ tải xuống chứng chỉ SSL và bạn cần cấu hình Apache theo cách thủ công để sử dụng chứng chỉ SSL.
- 2 Là sẽ tự động tải xuống SSL và cấu hình Apache để sử dụng chứng chỉ SSL
Ở đây tôi chọn tự động cấu hình (2):
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 <-- Nhập 2 để tự động tạo và cấu hình SSL cho domain
Nếu nhận được thông báo bên dưới là đã thành công.
Congratulations! You have successfully enabled https://test.zhost.vn
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=test.zhost.vn
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/test.zhost.vn/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/test.zhost.vn/privkey.pem
Your cert will expire on 2020-07-17. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Các tập tin chứng chỉ vừa tạo sẽ được lưu trong thư mục /etc/letsencrypt/live/test.zhost.vn
Certbot đồng thời làm tự động các việc sau:
- Tạo 1 file Virtual Host mới cho domain test.zhost.vn lắng nghe trên port 443 (https) và điền đầy đủ cấu hình SSL.
- Include file Virtual Host mới (https) vào file cấu hình của Apache (/etc/httpd/conf/httpd.conf)
- Thêm đoạn cấu hình chuyển hướng từ http –> https trong Virtual Host cũ đang lắng nghe port 80 của domain test.zhost.vn
Kiểm tra hoạt động
Từ trình duyệt của User bạn vào http://test.zhost.vn sẽ được tự động chuyển hướng sang https://test.zhost.vn và chứng chỉ đã hoạt động.
Cài đặt và cấu hình Let’s Encrypt sử dụng cho Nginx trên CentOS 7
Lưu ý: Do sử dụng cùng một máy chủ để Lab vì vậy để thực hiện được bước này, ta cần Restore trạng thái máy chủ như ban đầu (Clear hết cấu hình của phần trước).
Cài đặt Nginx và cấu hình Virtual Host
Các bước cài đăt Nginx và cấu hình Virtual Host bạn có thể tham khảo tại bài viết: Cấu hình Virtual Host cho Nginx
Ở đây tôi sẽ cấu hình một Website đơn giản chạy trên tên miền test.zhost.vn.
Thử truy cập vào website bằng tên miền thông qua http (port 80). http://test.zhost.vn
Cài đặt Certbot
Cài đặt EPEL:
yum install epel-release -y
Cài đặt tất cả certbot bằng lệnh sau:
sudo yum install certbot-nginx -y
Tạo chứng chỉ SSL và cấu hình hoạt động trên Nginx
Chạy lệnh sau để tạo chứng chỉ SSL cho miền của bạn:
certbot --nginx -d test.zhost.vn
Hoặc bạn cũng có thể tạo ra một chứng chỉ mà có thể sử dụng cho nhiều tên miền bằng cách thêm option -d:
certbot --apache -d domain.com -d www.domain.com -d domain2.com -d test.domain2.com
Nhập các tuỳ chọn như phía dưới:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] <-- Nhập email của quản trị viên Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A <-- Nhập A để đồng ý - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N <-- Nhập Y để đồng ý chia sẻ email để nhận tin tức hoặc N để từ chối Obtaining a new certificate Performing the following challenges: http-01 challenge for test.zhost.vn Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/test.zhost.vn.conf
Tiếp theo hãy chọn tuỳ chọn 1 hoặc 2 để tiếp tục. trong đó:
- 1 Là sẽ chỉ tải xuống chứng chỉ SSL và bạn cần cấu hình Nginx theo cách thủ công để sử dụng chứng chỉ SSL.
- 2 Là sẽ tự động tải xuống SSL và cấu hình Nginx để sử dụng chứng chỉ SSL
Ở đây tôi chọn tự động cấu hình (2):
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Nếu nhận được thông báo bên dưới là đã thành công.
Congratulations! You have successfully enabled https://test.zhost.vn
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=test.zhost.vn
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/test.zhost.vn/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/test.zhost.vn/privkey.pem
Your cert will expire on 2020-07-17. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Các tập tin chứng chỉ vừa tạo sẽ được lưu trong thư mục /etc/letsencrypt/live/test.zhost.vn
Certbot đã tự động chỉnh sửa lại file Virtual Host của domain test.zhost.vn để thêm cấu hình chứng chỉ SSL và chuyển hưởng https sang https.
Kiểm tra hoạt động
Từ trình duyệt của User bạn vào http://test.zhost.vn sẽ được tự động chuyển hướng sang https://test.zhost.vn và chứng chỉ đã hoạt động.
Cấu hình gia hạn tự động SSL
Theo mặc định, chứng chỉ Let’s Encrypt có hiệu lực trong 90 ngày. Do đó, nên gia hạn chứng chỉ trước khi hết hạn. Lý tưởng nhất là tự động hóa quá trình gia hạn.
Để gia hạn chứng chỉ SSL thủ công, bạn chạy lệnh:
certbot renew --dry-run
Để tự động kiểm tra và gia hạn chứng chỉ sắp hết hạn, bạn hay tạo một cronjob đặt lịch tự động chạy lệnh gia hạn.
Chỉnh sửa crontab:
crontab -e
Thêm dòng sau vào cuối file:
* */12 * * * root /usr/bin/certbot renew >/dev/null 2>&1
Cronjob trên sẽ tự động chạy lệnh kiểm tra 2 lần/ngày và gia hạn chứng sắp hết hạn.
Zhost chúc các bạn thành công!