Blog #2

Tạo chứng chỉ SSL với Certbot

#Cài đặt và config Nginx

Cài đặt Nginx:

$ sudo apt-get install nginx

Sau đó bạn cần edit file: /etc/nginx/sites-available/default hoặc /etc/nginx/sites-enabled/default.

upstream app {
    # Path to Puma SOCK file, as defined previously
    server unix:/home/deploy/appname/shared/sockets/puma.sock fail_timeout=0;
}
server {
    listen 80;
    server_name localhost;
    root /home/deploy/appname/public;
    try_files $uri/index.html $uri @app;
    location @app {
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }
    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}

Restart Nginx:

$ sudo service nginx restart

Nếu không có error gì, bạn có thể vào url để thử nhé http://server_ip/

#Tạo SSL với certbot

Đến step này, Rails App của bạn đã lên production rồi. Ở bước này, mình sẽ sử dụng certbot để tạo SSL. certbot là open source để tạo và tự động renew SSL sử dụng Let’s Encrypt

Đầu tiên mình phải có domain mới set up SSL được. Sau khi mua và config doman xong, bạn update trong file config của Nginx từ localhost sang domain của bạn.

server {
    listen 80;
    server_name domain;
    ...
}

Các bước đơn giản như sau: (bạn có thể vào website của certbot để xem chi tiết hơn)

1/ ssh vào server

2/ Cài đặt snapd.

3/ Kiểm tra và update snapd tới version mới nhất

$ sudo snap install core; sudo snap refresh core

4/ Remove các certbot packages nếu có

$ sudo apt-get remove certbot

5/ Cài đặt certbot

$ sudo snap install --classic certbot

6/ Chạy command dưới để check certbot đã chạy ok

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

7/ Kết nối cerbot vào Nginx

$ sudo certbot --nginx

Nó sẽ tự động config vào file config của Nginx /etc/nginx/sites-available/default và mặc định sẽ tự động renew SSL cho mình. Mình sẽ không cần lo về việc hết hạn nữa.

Bạn có thể vào url để thử nhé https://domain/

#References

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx-on-ubuntu-14-04

https://gorails.com/deploy/ubuntu/18.04#guide

https://certbot.eff.org/

https://viblo.asia/p/step-to-step-deploy-rails-app-va-config-ssl-aWj53jgol6m