Cài SSL trên Ubuntu 16.04 với chứng chỉ của Let’s Encrypt

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 certbotwebroot, 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ị:

Cài SSL trên Ubuntu với Letsencrypt

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ả.

Cấu hình SSL trên Nginx

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ả.

Cấu hình SSL trên Apache

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.

Gia hạn chứng chỉ SSL Letsencrypt

Để 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.

Leave a Reply