Skip to content

Cài đặt SSL Let’s Encrypt với Certbot

SSL là gì?

SSL là chữ viết tắt của Secure Sockets Layer (Lớp socket bảo mật). Một loại bảo mật giúp mã hóa liên lạc giữa website và trình duyệt. Chứng chỉ SSL sẽ có hai phần gồm những phần Private KeyPublic Key, trong đó Public Key nó sẽ được cài ở các ứng dụng đầu cuối mà trình duyệt hay các ứng dụng khác cũng có thể truy cập đọc được, còn Private Key nó sẽ được cài đặt ở các ứng dụng xử lý tiếp nhận dữ liệu.

Mục đích hoạt động của nó giống như chìa khóa để giúp giải mã những dữ liệu gửi đi từ thiết bị đầu cuối cũng đã được mã hóa thông qua Public Key.

Công nghệ này đang lỗi thời và được thay thế hoàn toàn bở TLS.

TSL là gì ?

TLS (Transport Layer Security), cũng là một cơ chế bảo mật - bảo mật lớp truyền dẫn (trong khái niệm mạng) - nó ra đời để thay thế cho SSL giờ không còn được phát triển

HTTPS ?

HTTPS - nó là một phần mở rộng của giao thức truyền nội dung text HTTP giữa client và server (giữa trình duyệt và máy chủ web), bản thông tin liên lạc bằng HTTP không được mã hóa, các gói tin có thể đọc được khi truyền dẫn. HTTPS là giao thức dùng cơ chế bảo mật SSL/TLS để mã hóa thông tin.

Các máy chủ web thường cấu hình để cổng 80 là giao thức HTTP và cổng 443 là giao thức HTTPS

Cách thức hoạt động TLS HTTPS

TLS dùng public key và private key, có một số cách thức sử dụng TLS tạo ra kết nối an toàn, sơ đồ trên (one-way TLS) là một cách thức, nó hoạt động qua các bước:

  • Trình duyệt gửi yêu cầu một phiên làm việc an toàn tới máy chủ
  • Máy trả về một chứng chỉ, chứng chỉ này có chứa public key của server, chứng chỉ này phát sinh bởi server và trên server có chứa private key nữa (private key không được gửi tới trình duyệt).
  • Trình duyệt cần ký nhận chứng chỉ, nó tạo ra yêu cầu tới CA (Certificate Authority) để chứng thực chứng chỉ.
  • Trình duyệt và máy chủ trao đổi một số thông tin để kiểm tra các key
  • Trình duyệt và Server bắt đầu trao đổi dữ liệu được mã hóa TLS

Certificate Authority là nhà cung cấp chứng chỉ số (cung cấp public key/private key cho server) - CA phải đảm bảo được danh tính chính xác cụ thể của đối tượng (server, webiste) được cung cấp chứng chỉ - bằng cách xác nhận thông tin của cá nhân, tổ chức.

Let’s Encrypt ?

Let’s Encrypt là một tổ chức xác thực SSL giống như Comodo, GeoTrust, Symantec nhưng có điểm khác đó là họ là tổ chức phi lợi nhuận được thành lập với sự bảo trợ của các tổ chức lớn trên thế giới Cisco, Akamai, Mozilla, Facebook…Do đó, những chứng chỉ SSL Let’s Encrypt sẽ không khác gì với những loại chứng chỉ SSL khác mà chỉ khác nhau ở chỗ bạn phải gia hạn mỗi 90 ngày một lần nếu muốn tiếp tục sử dụng.

Certbot ?

Certbot là một ứng dụng Let’s Encrypt phổ biến nhất và có trong hầu hết các bản phân phối Linux chính, bao gồm khả năng cấu hình tự động thuận tiện cho Apache và Nginx. Ngoài certbot còn có các ứng dụng khác như : acme.sh, lego, caddy ...

Tự tạo self-signed certificate

Đây là certificate mà ta sẽ tự tạo ra trên chính server. Certificate này không được xác thực bởi các nhà cung cấp chứng chỉ số (CA). Mục đích tạo self-signed certificate là để kiểm tra hoặc sử dụng trong môi trường mạng local.

Step 1: Tạo private key

# -- Tạo thư mục chứa certificate
mkdir -p /etc/ssl/example.local
cd /etc/ssl/example.local
# -- Tạo key với mã hóa RSA
openssl genrsa -des3 -out example.key 2048

# -- Tạo mà không yêu cầu pass phrase
# openssl rsa -in example.key -out example.key

root@vnsys:/etc/ssl/example.local# openssl genrsa -des3 -out example.key 2048 Generating RSA private key, 2048 bit long modulus …………………………………………………+++ ……………………………..+++ e is 65537 (0x10001) Enter pass phrase for example.key: Verifying – Enter pass phrase for example.key:

Step 2: Đăng ký certificate (Certificate Signing Request -CSR)

# -- chúng ta thực hiện đăng ký certificate
openssl req -new -key example.key -out example.csr

Nhập các thông tin để tạo key

For some fields there will be a default value, If you enter ‘.’, the field will be left blank. Country Name (2 letter code) [AU]:VN State or Province Name (full name) [Some-State]:HN Locality Name (eg, city) []:CG Organization Name (eg, company) [Internet Widgits Pty Ltd]:IT Organizational Unit Name (eg, section) []:Example Inc Common Name (e.g. server FQDN or YOUR name) []:example.local Email Address []:

Step 3: Tạo certificate – CRT

# -- Dựa vào CSR ở trên, chúng ta tạo một self-signed certificate, với hiệu lực 365 ngày
openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt

root@vnsys:/etc/ssl/example.local# openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt Signature ok subject=/C=VN/ST=HN/L=CG/O=IT/OU=Example Inc/CN=example.local Getting Private key

Step 4: Mở rộng key và cert thành tệp pem

Tệp PEM là tệp tin chứa định dạng có thể chỉ public certificate hoặc có thể gồm tập public key, private key và root certificate kết hợp với nhau. Chúng ta thực hiện nối private key và certificate ở trên để tạo thành tệp PEM

cat example.key example.crt >> example.pem

Tổng kết

# -- vậy là chúng ta có 3 files dùng để cấu hình SSL chó website
ls -la /etc/ssl/example.local
# example.key
# example.crt
# example.pem

Tham khảo

SSL/TLS và giao thức https với Open SSL và Let's Encrypt