Tiếp tục chuỗi bài tim hiểu chứng chỉ SSL của Let’s Encrypt, trong bài này mình sẽ hướng dẫn các bạn cách cài SSL trên Ubuntu 16.04 dùng chứng chỉ lấy từ Let’s Encrypt.
Mình vẫn sẽ dùng cặp đôi certbot và webroot, so với CentOS 7 thì cài trên Ubuntu câu lệnh có khác một chút bởi certbot không có sẵn trong kho chứa của Ubuntu bạn phải tải từ Github về VPS.
Bạn cũng cần đọc lại bài viết bên dưới của mình để hiểu thêm, bởi cài SSL cho Ubntu các thông số cấu hình Web Server rất giống CentOS.
Bạn cần chuẩn bị:
- Cloud VPS tại Linode, Vultr, DigitalOcean
- Ubuntu 16.04
- Web Server Nginx, Apache
- Domain demo mình vẫn dùng thuysys.xyz
1. Cài đặt chung.
Phần cài đặt chung cho toàn bộ server
Cài đặt Git cho server.
apt-get install git
Vì mình muốn clone certbot về thư mục /etc/certbot nên dùng lệnh chuyển thư mục bằng lệnh cd /etc/.
Sau đó chạy lệnh:
git clone https://github.com/certbot/certbot
Phần sử dụng Git các bạn cứ làm theo thôi, có ai thắc mắc Git là gì ? thì chịu khó lên mạng đọc tài liệu giúp mình. Ngăn gọn thì Git là một kho chứa tài liệu khổng lồ được lập trình viên trên thế giới up code lên share cho mọi người. Toàn bộ dữ liệu trên Git được lưu theo dạng “phiên bản” để mọi người có thể làm việc trên cùng một file không gây xung đột và nhiều tính năng khác nữa. Ai muốn lấy code về chỉ việc chạy lệnh “clone” là xong.
Chúng ta tiếp tục bước, lấy chứng chỉ cho domain.
./certbot-auto certonly --webroot -w /var/www/thuysys.xyz -d thuysys.xyz -d www.thuysys.xyz
Kết quả như bên dưới là thành công
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/thuysys.xyz/fullchain.pem. Your cert will expire on 2016-10-26. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you lose your account credentials, you can recover through e-mails sent to admin@thuysys.xyz. - 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
Bạn nào đã đọc bài viết về cách lấy chứng chỉ SSL trên CentOS 7 của mình thì sẽ thấy một điểm khác. Là, trên Ubuntu bạn sẽ không phải tạo thư mục ẩn .well-known
trong Document Root. Khi chạy lệnh lấy chứng chỉ thư mục này sẽ tự động được tạo ra, có vẻ như lấy certificate trên Ubuntu dễ hơn CentOS.
Xem log nginx để biết cách chứng thực của Let’s Encrypt với Web Server, nhập lệnh cat /var/log/nginx/access.log
66.133.109.36 - - [28/Jul/2016:10:41:52 +0000] "GET /.well-known/acme-challenge/KeDJpkpcODv0kCheVUI_6dWMXxW9N22Sc12iRf7cBZE HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
Kiểm tra lại đã nhận đủ file cần thiết chưa.
ls -ls /etc/letsencrypt/live/thuysys.xyz/ total 0 0 lrwxrwxrwx. 1 root root 35 Jul 30 10:41 cert.pem -> ../../archive/thuysys.xyz/cert1.pem 0 lrwxrwxrwx. 1 root root 36 Jul 30 10:41 chain.pem -> ../../archive/thuysys.xyz/chain1.pem 0 lrwxrwxrwx. 1 root root 40 Jul 30 10:41 fullchain.pem -> ../../archive/thuysys.xyz/fullchain1.pem 0 lrwxrwxrwx. 1 root root 38 Jul 30 10:41 privkey.pem -> ../../archive/thuysys.xyz/privkey1.pem
Đủ bốn file key cho việc install ssl rồi, giờ sẽ đi chi tiết từng loại Web Server cụ thể.
2. Cấu hình SSL trên nginx
Mở file config Virtual Host của nginx thêm vào block server {…} nội dung như bên dưới.
listen 443 ssl default_server; ssl_certificate /etc/letsencrypt/live/thuysys.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/thuysys.xyz/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
Cấu hình nginx trên Ubuntu cũng như nginx với CentOS giống nhau cả thôi không có gì đặc biệt cả. Xong đâu đấy khởi động lại nginx cho mình.
systemctl restart nginx
Mở Web Browser xem kết quả.
3. Cấu hình SSL trên Apache
Cấu hình apache sử dụng SSL trên Ubuntu khác một chút so với CentOS.
Đầu tiên bạn phải enable Module SSL cho apache vì mặc định mod ssl được cài đặt nhưng chưa kích hoạt.
Chạy lệnh:
a2enmod ssl
Kết quả như bên dưới là được.
Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run:
Bước tiếp theo là tạo file cấu hình SSL Virtual Host cho domain thuysys.xyz. Mình tạo file cấu hình ssl có tên là ssl-thuysys.xyz.conf
.
vi /etc/apache2/sites-available/ssl-thuysys.xyz.conf
Thêm vào mấy dòng sau.
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerName www.thuysys.xyz:443 DocumentRoot /var/www/thuysys.xyz SSLCertificateFile /etc/letsencrypt/live/thuysys.xyz/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/thuysys.xyz/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/thuysys.xyz/chain.pem SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH </VirtualHost> </IfModule>
Tiếp theo là enable file ssl-thuysys.xyz.conf vừa tạo ở trên, chạy lệnh.
a2ensite ssl-thuysys.xyz
Enable thành công
Enabling site ssl-thuysys.xyz. To activate the new configuration, you need to run: service apache2 reload root@c2258109936f:/etc/apache2# service apache2 reload * Reloading Apache httpd web server apache2
Xong đâu đấy mở trình duyệt ra nhập vào https://thuysys.xyz để xem kết quả.
Hiện lên cái khóa màu xanh là cấu hình đã chuẩn.
4. Renewal chứng chỉ SSL Let’s Encrypt
Sau khi xin chứng chỉ bạn sẽ dùng được trong 90 ngày, hết thời gian này bạn phải gia hạn chứng chỉ. Muốn gia hạn chứng chỉ Let’s Encrypt trên Ubuntu chạy lệnh sau cho mình.
./certbot-auto renew --webroot -w /var/www/html --force-renew
Kết quả như bên dưới là thành công.
Để tự động gia hạn thì tạo thêm cái cron job cho nữa là xong. chạy lệnh crontab -e
rồi thêm dòng bên dưới vào.
0 0 1 */2 * certbot renew --webroot -w /usr/share/nginx/html --force-renew
Nếu không chạy được lệnh crontab -e
có nghĩa là server của bạn chưa được cài cron, với hệ điều hành Ubuntu chạy lệnh sau.
apt-get install cron
Rất đơn giản phải không ! Mình xin kết thúc bài viết ở đây. Bạn nào muốn cấu hình thêm về redirect url để thay đổi url website thì xem lại các bài viết về Letsencrypt trên blog của mình để rõ hơn.
Hoặc muốn mua SSL Certificate thương hiệu tham khảo thêm bài hướng dẫn bên dưới.
Hẹn gặp lại ở bài tới.