Giới thiệu Let’s Encrypt Certificate
Let’s Encrypt là gì? Let’s Encrypt là một chứng chỉ số miễn phí, ra mắt vào ngày 12 tháng 4 năm 2016. Nó được cung cấp bởi tổ chức chứng nhận phi lợi nhuận Let Encrypt được điều hành bởi Nhóm nghiên cứu bảo mật Internet (ISRG). Nhằm cung cấp chứng chỉ X.509 cho mã hóa TLS (Transport Layer Security) miễn phí. Chứng chỉ có giá trị trong 90 ngày, trong đó việc gia hạn có thể diễn ra bất cứ lúc nào.
Hướng dẫn cài đặt Let’s Encrypt trên Ubuntu / Debian
Cài đặt Certbot
Để cài đặt Certbot chúng ta sử dụng command sau:
sudo apt-get install certbot python3-certbot-nginx
Trường hợp chưa có gói package này thì hãy add repository vào bằng command sau:
sudo add-apt-repository ppa:certbot/certbot sudo apt-get update
Rồi chạy lại lệnh cài đặt bên trên
Cài đặt Nginx Server sử dụng Let’s Encrypt
Để cài đặt Nginx tham khảo bài viết: Cài đặt Nginx Web Server
Sau khi cài đặt xong, chúng ta có một Web Server sử dụng Nginx, các bạn trỏ domain của bạn tới địa chỉ IP của Web Server. Lúc này Website của bạn chưa được cài đặt Let’s Encrypt nên chỉ sử dụng HTTP. Để sử dụng HTTPS chúng ta thực hiện các bước tiếp theo bên dưới.
Lấy certificate miễn phí cho Domain
Để lấy certificate cho tên miền, chúng ta sử dụng command sau:
sudo certbot --nginx -d test.vinasupport.com
Thay test.vinasupport.com thành tên miền của bạn.
Các bạn điền 1 số thông tin cần thiết như:
- Địa chỉ Email
- Đồng ý với điều khoản sử dụng
- Có nhận Email support không
- Có Redirect từ HTTP sang HTTPS không
Kết quả:
Cấu hình Nginx sử dụng Let’s Encrypt Certificate
Mặc định Let’s Encrypt sẽ thêm config cho website của bạn vào file /etc/nginx/site-available/default . Còn chưa có thì bạn hãy tư thêm config vào như sau:
server { # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name test.vinasupport.com; # managed by Certbot location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # pass PHP scripts to FastCGI server # #location ~ \.php$ { # include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): # fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/test.vinasupport.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/test.vinasupport.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = test.vinasupport.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80 ; listen [::]:80 ; server_name test.vinasupport.com; return 404; # managed by Certbot }
Cuối cùng reload lại Nginx để nhận HTTPS
sudo systemctl reload nginx
Kết quả website của bạn đã có HTTPS với chứng chỉ số SSL miễn phí rồi đó.
Xóa chứng chỉ Let’s Encrypt
Để xóa chứng chỉ đã cấp chúng ta sử dụng command sau:
sudo certbot delete
Nguồn: vinasupport.com