Chào 500 anh em yêu tech. Lại là mình đây!!! Chào mừng các bạn đã quay lại với bài viết của mình. Hôm nay chúng ta cùng nhau tìm hiểu làm thế nào để tạo SSL/TLS miễn phí với OpenSSL và Let’s Encrypt các bạn nhé!
Như các bạn đã biết, hiện nay các website đều đã sử dụng giao thức HTTPS thay cho HTTP. HTTPS là phần mở rộng bảo mật của HTTP, nó là giao thức dùng cơ chế bảo mật SSL để mã hóa thông tin.
Các bạn thường thấy hình ổ khoá khi vào một link website nào đó điều đó có nghĩa trang web đang sử dụng HTTPS (Hình trên)
Vậy làm sao để có được có được ổ khoá như vậy chúng ta cùng tìm hiểu nhé.
Mục tiêu:
- Hiểu rõ SSL/TLS là gì.
- Hoạt động SSL.
- Tại sao cần SSL/TLS
- Các loại chứng chỉ SSL/TLS
- Cách tạo SSL miễn phí
1. SSL/TLS là gì?
Đầu tiên chúng ta đi tìm hiểu khái niệm SSL/TLS
-
SSL là Secure Sockets Layer (Lớp socket bảo mật), nó là một cơ chế bảo mật bằng cách mã hóa thông tin liên lạc giữa clien và server.
-
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 – hoạt động dựa trên việc truyền nội dung text HTTP giữa client và server (giữa trình duyệt và máy chủ web) và HTTP thì không được mã hóa, các gói tin có thể đọc được khi truyền đi. HTTPS là giao thức dùng cơ chế bảo mật SSL/TLS để mã hóa thông tin.
2. SSL hoạt động như thế nào?
TLS dùng public key và private key 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.
3.Tại sao cần sử dụng SSL/TLS?
Có 2 lí do chính cần sử dụng SSL/TLS:
- Bảo mật đường truyền cho website.
Nếu chỉ sử dụng giao thức HTTP thì dữ liệu trao đổi giữa client và server sẽ không được mã hóa và bất kỳ máy tính nào ở giữa có thể bắt gói tin và đọc các thông tin nhạy cảm (username, password, thông tin thẻ tín dụng) từ gói tin đó.
- Giúp cho website của bạn được xác thực, nâng cao độ tin tưởng cho người dùng.
Ngoài việc mã hóa, một chứng nhận SSL thích hợp cũng cung cấp tính xác thực. Đơn giản là domain của bạn được một bên thứ 3 uy tín xác thực rằng nó thuộc sở hữu của cá nhân hoặc tổ chức của bạn. Điều này có nghĩa là khách hàng có thể chắc chắn rằng mình đang gửi thông tin đến đúng nơi chứ không phải đến một kẻ nào đó đang mạo danh cá nhân, tổ chức của bạn để cố gắng ăn cắp thông tin của khách hàng.
4. Các loại chứng chỉ SSL/TLS
Chứng chỉ SSL được phân chia thành 3 loại chính, sẽ khác về cách xác thực và thông tin chứa trong chứng chỉ, nhưng khả năng bảo mật là như nhau:
- DV SSL (Domain Validated): Chứng chỉ được xác thực với cấp độ tên miền.
- OV SSL (Organization Validated): Chứng chỉ được xác thực với cấp độ doanh nghiệp/tổ chức.
- EV SSL (Extended Validated): Chứng chỉ được xác thực với cấp độ doanh nghiệp/tổ chức mở rộng
5. Tạo SSL miễn phí dùng OpenSSL
OpenSSL là công cụ mã hóa SSL/TLS, sử dụng nó để tạo/quản lý các public key/private key – dùng nó để sinh các chứng chỉ SSL tự xác thực.
Do là chứng chỉ tự xác thực nên bộ chứng chỉ SSL do OpenSSL sinh ra chỉ cung cấp mục đích bảo mật đường truyền chứ không được verify và Google cũng sẽ đánh dấu website sử dụng loại chứng chỉ này là unsafe.
OpenSSL phù hợp cho việc:
- Thực hành và làm quen với SSL
- Tạo SSL cho các domain nội bộ trong VLAN không cần xác thực
Các bước tạo chứng chỉ SSL với OpenSSL:
Đầu tiên bạn chạy lệnh sau:
openssl genrsa -out ca.key 2048
Lệnh này openssl sinh ra file tên ca.key
chứa RSA PRIVATE KEY.
Tiếp theo chạy lệnh:
openssl req -new -key ca.key -out ca.csr
Bạn nhập các thông tin theo yêu cầu, ví dụ như sau:
Country Name (2 letter code) [XX]:VN State or Province Name (full name) []:HCM Locality Name (eg, city) [Default City]:Ho Chi Minh Organization Name (eg, company) [Default Company Ltd]: domain.com Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:domain.com
Nếu hệ thống có hỏi thêm các thông tin: Email, Optional company name, hay Challenge password thì bỏ qua bằng cách nhấn Enter.
Sau lệnh này openssl sinh ra file ca.csr
chứa CERTIFICATE REQUEST (đây là file dùng để request chứng chỉ).
Tiếp theo chạy lệnh để tự gen chứng chỉ:
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Sau lệnh này sinh ra file CERTIFICATE tên: ca.crt
Như vậy ta có được 2 file:
-
Chứng chỉ (public key):
ca.crt
-
Private key:
ca.key
Bạn có thể sử dụng 2 file này để cấu hình SSL cho website, nhưng vì đây là chứng chỉ tự xác thực nên trình duyệt sẽ xuất hiện cảnh báo dấu X màu đỏ.
Để hết báo X đỏ cần xác thực cần phải từ một CA, bạn có thể mua chứng chỉ SSL/TLS để có public key/private key hoặc lấy cert miễn phía từ CA qua một số cách miễn phí sau:
- Sử dụng CloudFlare
- Sử dụng OpenSSL
- Sử dụng Let’s Encrypt
6. Tạo SSL sử dụng Let’s Encrypt
Let’s Encrypt là chứng nhận (CA) mở, miễn phí và tự động, hoạt động vì lợi ích cộng đồng. Đây là dịch vụ được cung cấp bởi Internet Security Research Group (ISRG).
Để lấy cert SSL từ Let’s Encrypt, đầu tiên bạn cần cài đặt certbot – đây là công cụ lấy chứng chỉ SSL Let’s Encrypt
sudo apt install certbot python3-certbot-nginx
Kiểm tra xem certbot đã được cài đặt thành công hay chưa
certbot --version
Tiếp theo, bạn chạy lệnh phía dưới để gen cert SSL
certbot certonly --standalone -d domain.com --staple-ocsp -m test@domain.com --agree-tos
Lưu ý, vì cert SSL do Let’s Encrypt cung cấp là cert SSL cấp độ DV (chứng chỉ được xác thực với cấp độ tên miền) nên bạn phải đảm bảo tên miền trỏ về đúng về địa chỉ IP Public của server chạy lệnh certbot.
Các bước cài mình có bài viết chi tiết ở đây
7. Lời kết
Các bạn đọc đến đây cũng đã hiểu SSL/TLS là gì rồi phải không. Các biết phải làm gì cho website của mình rồi đó. Chúc các bạn thành công.! Hẹn các bạn ở các bài tiếp tiếp theo nhé!