NỘI DUNG
Kết thúc nội dung Giải ngố Linux – Phần 9: Thiết lập firewall và ssh trên Ubuntu 22.04 LTS, coi như tôi đã mần xong phần thiết lập ban đầu (quản lý user, firewall và thiết lập SSH) trên Ubuntu 22.04 LTS nhằm phục vụ việc thực hiện kết nối ssh từ client machine đến server.
Giờ là lúc tôi sẽ chuyển sang phần cập nhật cho VPN Server trên Ubuntun 22.04 LTS như đã đề cập trước đó. Tuy nhiên, trước khi bay vô xử lý phần cấu hình cho VPN Server, tôi thấy cần đề cập kỹ hơn về việc thiết lập CA trước.
#1. Thiết lập CA để làm gì? (hỏi lần 2)
Nếu bạn còn nhớ (còn không nhớ hoặc không biết thì cũng không sao, vì tôi sẽ nhắc lại ngay sau đây), trong cái series Hướng dẫn tạo VPN Server, tôi đã có lần đề cập đến câu hỏi “Thiết lập CA để làm gì?” trong nội dung Hướng dẫn tạo VPN Server miễn phí từ A đến Z – Phần 3: Cài đặt OpenVPN, EasyRSA và thiết lập Certificate Authority trên GCP VM Instance.
“… Trả lời ngắn gọn: CA trên VPN Server ký Certificate chứa Public Key (của VPN Server). VPN Client lấy Certificate để thực hiện Key-Exchange theo Asymetric Encryption. Cái key có được từ quá trình Key-Exchange sẽ được dùng trong các session theo dạng Symetric Encryption….”
Lưu ý:
- Ngay bên dưới phiên bản “Trả lời ngắn gọn” nói trên, tôi cũng có trình bày phiên bản “Trả lời dông dài“. Nếu có thời gian, bạn nên xem qua một lần cho rõ vì phiên bản ngắn gọn tương đối khó hình dung;
- CA có thể dùng cho các mục đích khác chứ không phải chỉ phục vụ mỗi VPN, ví dụ cho HTTPS như giới thiệu trong nội dung Giải ngố WWW – Phần 5: 6 bước tự dựng Certificate Authority Server để cấp Certificate cho Website nâng cấp từ HTTP lên HTTPS;
Nếu đọc kỹ câu trả lời ngắn gọn nói trên, bạn sẽ thấy tôi đã triển khai giải pháp “mì ăn liền” khi ghép cả CA server vào VPN server. Việc này nhìn chung không ảnh hưởng gì đáng kể nếu bạn sử dụng VPN server để vọc vạch và phục vụ các nhu cầu của người dùng thông thường (ví dụ như coi phim sẽ???). Tuy nhiên, nếu bê nguyên xi phương án này vô cho trường hợp muốn làm ăn nghiêm chỉnh thì không ổn.
Thực tế, CA server nên là một hệ thống tách biệt chỉ phục vụ đúng nhiệm vụ import/sign/revoke (tức là nhận, ký và thu hồi) certificate request từ VPN server chứ không ôm đồm thêm việc khác. Thậm chí, khi không có nhu cầu xử lý thì thì bạn nên shutdown nó luôn cho lành.
Và vì thế, trong các nội dung tiếp sau đây, tôi sẽ cập nhật lại thông tin về việc thiết lập CA server trên hệ thống biệt lập chạy Ubuntun 22.04 LTS.
#2. Thiết lập CA server trên Ubuntu 22.4
#2.1 Cài đặt Easy-RSA
Như đề cập ở trên, lúc này CA server là một hệ thống tách biệt nên tôi sẽ chỉ cần cài cắm thằng Easy-RSA. Công tác này tương đối dễ dàng với các command:
sudo apt update
sudo apt install easy-rsa
#2.2 Khởi tạo Public Key Infrastructure – PKI
Để làm việc này, trước hết tôi cần tạo thư mục easy-rsa phục vụ việc thiết lập Public Key Infrastructure với command:
mkdir ~/easy-rsa
Kế đến, tôi tiến hành tạo symbolic link (đại khái giống liên kết kiểu shortcut trên Windows) từ thư mục easy-rsa đến easy-rsa package files đã cài đặt ở Bước 2.1 ( /usr/share/easy-rsa/* trong trường hợp này). Mục tiêu của việc tạo symlink này là nhằm bảo đảm mỗi khi tôi cập nhật easy-rsa package, các thay đổi tương ứng cũng sẽ được hồi quang phản chiếu vô cái thư mục easy-rsa mà tôi đã khởi tạo. Trường hợp không thích chơi kiểu này, bạn hoàn toàn có thể tiến hành copy thủ công easy-rsa package files vô thư mục easy-rsa.
ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Tiếp tục, tôi tiến hành phân quyền tương ứng cho thư mục easy-rsa
chmod 700 /home/test/easy-rsa
ls -la /home/test/easy-rsa/
Nếu kết quả kiểm hàng êm đẹp như trên thì tôi sẽ có thể bắt đầu khởi tạo cái Public Key Infrastructure – PKI và kiểm tra với command:
cd ~/easy-rsa
./easyrsa init-pki
ls -la /home/test/easy-rsa/
Kết quả ở trên tôi đã khởi tạo thành công PKI dir và sẵn sàng cho bước khởi tạo CA.
#2.3 Khởi tạo CA
Cũng tương tự như trong series Hướng dẫn tạo VPN Server trước đó, tôi sẽ cần chuẩn bị một file vars phục vụ quá trình tạo CA.
nano vars
Tùy thuộc vào tình hình cụ thể, bạn sẽ có thể cần cập nhật lại các giá trị tương ứng. Trường hợp nếu muốn thử nghiệm trước rồi tinh chỉnh lại khi làm thật thì bạn có thể sử dụng các giá trị tham khảo sau:
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "NewYork"
set_var EASYRSA_REQ_CITY "New York City"
set_var EASYRSA_REQ_ORG "MyOrg"
set_var EASYRSA_REQ_EMAIL "admin@example.com"
set_var EASYRSA_REQ_OU "Community"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Lưu ý: Bạn xài text editor nào khác cũng được, chứ không nhất thiết phải dùng nano. Tôi có giới thiệu về vấn đề này trong nội dung Giải ngố Kali Linux – Phần 6: Bộ 3 nguyên tử text editor nano/vi/vim và cách buff damage với skill so sánh nội dung file bằng comm/diff
Tôi tiến hành kiểm tra lại nội dung của file vars.
cat vars
Rồi, giờ là lúc tôi sẽ tiến hành dựng CA với command:
./easyrsa build-ca
Quá trình này sẽ phọt ra một số thông tin thiết lập liên quan, tuy nhiên, tôi sẽ cần lưu ý để nhập passphrase cho key pair tương ứng. Đồng thời, tôi cũng cần chọn/xác nhận Common Name – CN (đại khái là đặt tên cho cái CA này).
Lưu ý:
- Bạn sẽ được yêu cầu nhập cái pasphrase nói trên mỗi khi tương tác với CA (ví dụ ký certificate cho VPN server) do vậy nên có phương án quản lý cái pasphrase này cho phù hợp;
- Trường hợp không muốn cung cấp passphrase ở mỗi lần ương tác, bạn có thể chạy command ./easyrsa build-ca nopass như tôi minh họa bên dưới. Tuy nhiên, về phương diện bảo mật, việc không sử dụng passphrase cho CA key là việc không nên. Ngoài ra, xuất phát từ kinh nghiệm bản thân, tôi nhận thấy “làm biếng” có thể gây nghiện nên nhìn chung bạn cũng đừng nên tập thói quen này.
Kết thúc quá trình này, tôi sẽ cần kiểm tra lại thông tin về việc khởi tạo CA certificate (ca.crt) ở thư mục pki cũng như sự hiện diện của ca.key trong thư mục pki/private.
ls -l pki/
ls -l pki/private/
Đến đây, coi như tôi đã tạm thời xử lý xong phần thiết lập CA. Bắt đầu từ kỳ tới, tôi sẽ đi vào phần triển khai thiết lập VPN server trên Ubuntu 22.04 LTS.
1 thought on “Giải ngố Linux – Phần 10: Thiết lập Certificate Authority – CA trên Ubuntu 22.04 LTS”