Thursday, November 21, 2024

Cách lấy chứng chỉ SSH Let’s Encrypt

-

Let’s Encrypt là một dự án cung cấp chứng chỉ SSL/TLS miễn phí và tự động hóa quá trình cấp chứng chỉ. SSL (Secure Sockets Layer) và TLS (Transport Layer Security) là các giao thức mạng được sử dụng để bảo mật việc truyền tải dữ liệu qua mạng.

Let’s Encrypt giúp người dùng có thể dễ dàng và tự động lấy chứng chỉ SSL/TLS mà không phải mất phí và tạo một môi trường web an toàn hơn. Với Let’s Encrypt, bạn có thể cài đặt chứng chỉ SSL/TLS trên máy chủ web của mình để bảo vệ các kết nối HTTPS và đảm bảo dữ liệu được mã hóa an toàn khi truyền tải giữa máy khách và máy chủ.

Để sử dụng Let’s Encrypt, bạn cần thực hiện các bước sau:

Bước 1 – Vì chúng ta sẽ sử dụng port 80 để tạo một webserver để phục vụ cho việc lấy chứng chỉ nên bạn phải chắc chắn rằng port 80 chưa được sử dụng bằng cách sử dụng lệnh dưới để hiển thị danh sách các kết nối mạng đang lắng nghe trên cổng 80. Cổng 80 là cổng mặc định cho HTTP, vì vậy lệnh này giúp xác định xem liệu có dịch vụ nào đang lắng nghe trên cổng 80 hay không.

netstat -tlnp | grep -w 80

Bước 2 – Cài đặt Certbot và các gói phụ trợ liên quan để làm việc với Nginx, một máy chủ web phổ biến. Certbot là công cụ sẽ được sử dụng để yêu cầu và cài đặt chứng chỉ SSL/TLS từ Let’s Encrypt.

sudo apt install certbot python3-certbot-nginx

Bước 3 – Tạo thư mục /var/www/wiki.hoanghd.com/html, nơi chứa các file của trang web “wiki.hoanghd.com”. Thư mục này sẽ được sử dụng để xác minh sở hữu tên miền và để Certbot tạo các file chứa chứng chỉ SSL/TLS.

sudo mkdir -p /var/www/wiki.hoanghd.com/html

Bước 4 – Thay đổi chủ sở hữu của thư mục /var/www/wiki.hoanghd.com/html sang người dùng hiện tại. Điều này đảm bảo rằng người dùng có quyền ghi vào thư mục này và có thể thực hiện các thao tác cần thiết.

sudo chown -R $USER:$USER /var/www/wiki.hoanghd.com/html

Bước 5 – Cấp quyền truy cập đọc, ghi và thực thi cho thư mục /var/www/wiki.hoanghd.com và tất cả các file con. Điều này đảm bảo rằng các file và thư mục có đủ quyền truy cập cho việc chạy máy chủ web.

sudo chmod -R 755 /var/www/wiki.hoanghd.com

Bước 6 – Tạo một trang web đơn giản với tiêu đề “Welcome to wiki.hoanghd.com!” và một tiêu đề cấp 1 “Success! The wiki.hoanghd.com server block is working!”. Đây là nội dung sẽ được hiển thị trên trang chủ của trang web “wiki.hoanghd.com” sau khi nó đã được cấu hình và hoạt động.

cat > /var/www/wiki.hoanghd.com/html/index.html << 'OEF'
<html>
    <head>
        <title>Welcome to wiki.hoanghd.com!</title>
    </head>
    <body>
        <h1>Success!  The wiki.hoanghd.com server block is working!</h1>
    </body>
</html>
OEF

Lý do chúng ta cần một website đơn giản bởi vì khi sử dụng Certbot, bạn cần cung cấp thông tin về web service hiện có trên máy chủ của bạn (chẳng hạn như Apache hoặc Nginx) để Certbot có thể tương tác và cài đặt chứng chỉ SSL/TLS.

Bước 7 – Tạo một file cấu hình Nginx để định nghĩa cách xử lý các yêu cầu đến cho trang web.

cat > /etc/nginx/sites-available/wiki.hoanghd.com << 'OEF'
server {
        listen 80;
        listen [::]:80;

        root /var/www/wiki.hoanghd.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name wiki.hoanghd.com;

        location / {
                try_files $uri $uri/ =404;
        }
}
OEF

Bước 8 – Tạo một liên kết từ file cấu hình Nginx /etc/nginx/sites-available/wiki.hoanghd.com đến thư mục /etc/nginx/sites-enabled/. Bằng cách này, file cấu hình của trang web “wiki.hoanghd.com” sẽ được kích hoạt và áp dụng bởi Nginx.

sudo ln -s /etc/nginx/sites-available/wiki.hoanghd.com /etc/nginx/sites-enabled/

Bước 9 – Sử dụng công cụ sed để tìm kiếm và sửa đổi một dòng trong file cấu hình chính của Nginx (/etc/nginx/nginx.conf). Cụ thể, nó bỏ comment (dấu #) và thiết lập giá trị server_names_hash_bucket_size là 64. Điều này giúp tăng hiệu suất xử lý tên miền trong Nginx.

sed -i 's/# server_names_hash_bucket_size 64;/server_names_hash_bucket_size 64;/' /etc/nginx/nginx.conf

Bước 10 – Kiểm tra cú pháp của file cấu hình Nginx và báo cáo về các lỗi cú pháp. Nếu không có lỗi, thông báo “syntax is ok” sẽ được hiển thị.

sudo nginx -t

Bước 11 – Khởi động lại dịch vụ Nginx để áp dụng các thay đổi trong cấu hình. Sau khi dịch vụ được khởi động lại, Nginx sẽ sử dụng cấu hình mới và áp dụng nó cho trang web “wiki.hoanghd.com”.

sudo systemctl restart nginx

Hoặc bạn cũng có thể sử dụng lệnh sau để reload lại Nginx.

nginx -s reload

Bạn phải chắc chắn webserver của bạn đã hoạt động.

Bạn có thể dùng lệnh curl để kiểm tra.

$ curl wiki.hoanghd.com
<html>
    <head>
        <title>Welcome to wiki.hoanghd.com!</title>
    </head>
    <body>
        <h1>Success!  The wiki.hoanghd.com server block is working!</h1>
    </body>
</html>

Hoặc một trình duyệt.

Bước 12 – Sử dụng lệnh sau để yêu cầu và cài đặt chứng chỉ SSL/TLS từ Let’s Encrypt cho trang web “wiki.hoanghd.com” bằng cách sử dụng Certbot và tích hợp với máy chủ web Nginx.

echo "A" | sudo certbot --nginx -d wiki.hoanghd.com --agree-tos --email hoanghd164@gmail.com

Cụ thể, các tùy chọn và tham số được sử dụng trong lệnh là:

  • echo "A": Lệnh này xuất chuỗi “A”. Certbot yêu cầu người dùng cung cấp phản hồi khi thực hiện quy trình xác minh với Let’s Encrypt. Bằng cách sử dụng echo "A", lệnh này tự động cung cấp phản hồi “A” cho Certbot, giúp tự động hóa quá trình.
  • sudo certbot --nginx: Lệnh này khởi chạy Certbot với chế độ tích hợp Nginx. Certbot sẽ tự động phát hiện và cấu hình Nginx để sử dụng chứng chỉ SSL/TLS mới từ Let’s Encrypt.
  • -d wiki.hoanghd.com: Tùy chọn này xác định tên miền hoặc tên miền chính của trang web mà chứng chỉ SSL/TLS sẽ được yêu cầu và cài đặt.
  • --agree-tos: Tùy chọn này đồng ý với các điều khoản và điều kiện của Let’s Encrypt.
  • --email hoanghd164@gmail.com: Tùy chọn này xác định địa chỉ email của bạn, đó là thông tin liên lạc sẽ được sử dụng trong quá trình yêu cầu chứng chỉ SSL/TLS.

Với lệnh trên, Certbot sẽ tự động yêu cầu chứng chỉ SSL/TLS từ Let’s Encrypt, xác minh sở hữu tên miền “wiki.hoanghd.com”, và cấu hình Nginx để sử dụng chứng chỉ mới. Sau khi quá trình hoàn tất, trang web “wiki.hoanghd.com” sẽ được bảo mật với chứng chỉ SSL/TLS.

Dưới đây là ví dụ đầu ra của lệnh trong trường hợp của tôi, trường hợp của bạn có thể khác mình.

$ echo "A" | sudo certbot --nginx -d wiki.hoanghd.com --agree-tos --email hoanghd164@gmail.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Skipped user interaction because Certbot doesn't appear to be running in a terminal. You should probably include --non-interactive or --force-interactive on the command line.
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for wiki.hoanghd.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/wiki.hoanghd.com
Please see the logfiles in /var/log/letsencrypt for more details.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/wiki.hoanghd.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/wiki.hoanghd.com/privkey.pem
   Your cert will expire on 2023-10-11. 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.

Thông báo “IMPORTANT NOTES” là kết quả trả về sau khi Certbot hoàn thành quá trình yêu cầu và cài đặt chứng chỉ SSL/TLS từ Let’s Encrypt cho trang web “wiki.hoanghd.com”. Dưới đây là ý nghĩa của thông báo đó:

  • “Congratulations! Your certificate and chain have been saved at…”: Thông báo này cho biết rằng chứng chỉ SSL/TLS và chuỗi chứng chỉ đã được lưu trữ thành công. Các file chứng chỉ và chuỗi chứng chỉ có đường dẫn như sau:
    • Chứng chỉ và chuỗi chứng chỉ: /etc/letsencrypt/live/wiki.hoanghd.com/fullchain.pem
    • Đây là file khóa cá nhân (private key): /etc/letsencrypt/live/wiki.hoanghd.com/privkey.pem
  • “Your cert will expire on 2023-10-11”: Thông báo này cho biết rằng chứng chỉ SSL/TLS của bạn sẽ hết hạn vào ngày 11 tháng 10 năm 2023. Điều này đề cập đến thời hạn sử dụng của chứng chỉ, và sau thời hạn này, bạn sẽ cần làm mới chứng chỉ.
  • “To obtain a new or tweaked version of this certificate in the future…”: Thông báo này gợi ý cách để làm mới hoặc điều chỉnh chứng chỉ trong tương lai. Bạn có thể chạy lại lệnh Certbot với tùy chọn “certonly” để yêu cầu một chứng chỉ mới hoặc điều chỉnh chứng chỉ hiện có.
  • “To non-interactively renew all of your certificates, run “certbot renew””: Thông báo này chỉ ra cách tự động làm mới tất cả các chứng chỉ của bạn. Bằng cách chạy lệnh “certbot renew”, Certbot sẽ tự động làm mới các chứng chỉ đã cài đặt một cách không tương tác.
  • “Your account credentials have been saved in your Certbot configuration directory…”: Thông báo này cho biết rằng thông tin đăng nhập tài khoản của bạn đã được lưu trữ trong thư mục cấu hình Certbot /etc/letsencrypt. Đây là nơi lưu trữ các thông tin đăng nhập và chứng chỉ của Certbot. Để đảm bảo an toàn, bạn nên sao lưu thư mục này thường xuyên.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories