Cách cài đặt và cấu hình OpenVPN Server trên Debian 12

theanh

Administrator
Nhân viên
Mạng riêng ảo (VPN) cho phép bạn truy cập internet bằng cách che giấu vị trí của bạn, giúp bạn có thể tự do truy cập internet an toàn trên các mạng không đáng tin cậy và tránh được các hạn chế về mặt địa lý cũng như kiểm duyệt. OpenVPN là giải pháp VPN Bảo mật lớp truyền tải (TLS) nguồn mở để đạt được mục tiêu này.

Trong hướng dẫn này, chúng ta sẽ cài đặt OpenVPN trên máy chủ Debian 12 và định cấu hình để có thể truy cập từ máy khách, đồng thời tạo kết nối VPN giữa chúng để chuyển hướng toàn bộ lưu lượng truy cập từ máy khách qua máy chủ OpenVPN.

Điều kiện tiên quyết​


  • Một máy chủ chạy Debian 12 hỗ trợ cả kết nối IPv4 và IPv6. Chúng ta sẽ gọi đây là máy chủ OpenVPN. Tường lửa đơn giản (UFW) được bật và đang chạy trên máy chủ này.

  • Một máy chủ chạy Debian 12 hỗ trợ cả kết nối IPv4 và IPv6. Chúng tôi sẽ thiết lập điều này như một Cơ quan cấp chứng chỉ (CA) riêng tư, mà chúng tôi sẽ gọi là máy chủ CA.

  • Người dùng không phải root có quyền sudo trên cả OpenVPN và máy chủ CA.

  • Máy khách để kết nối với máy chủ OpenVPN. Bạn có thể sử dụng thiết bị cục bộ của mình làm máy khách. OpenVPN có máy khách cho Windows, Linux, macOS, Android và iOS. Bạn có thể sử dụng bất kỳ máy nào trong số chúng để kết nối. Chúng tôi sẽ sử dụng máy tính khách Debian 12 cho hướng dẫn này.

  • Mọi thứ đều được cập nhật trên OpenVPN và máy chủ CA.
Mã:
$ sudo apt update && sudo apt upgrade

Bước 1 - Thiết lập máy chủ CA​

Cơ quan cấp chứng chỉ (CA) là một thực thể chịu trách nhiệm cấp chứng chỉ kỹ thuật số để xác minh danh tính trên Internet. Trong hướng dẫn này, chúng tôi sẽ sử dụng một máy chủ độc lập làm máy chủ CA riêng sẽ xác thực chứng chỉ máy chủ và máy khách OpenVPN. Máy chủ CA của bạn không nên chạy bất kỳ dịch vụ nào khác ngoài việc nhập, ký và xác thực chứng chỉ.

Bước 1.1 - Cài đặt Easy-RSA​

Bước đầu tiên là cài đặt bộ tập lệnh easy-rsa. easy-rsa là một công cụ quản lý Cơ quan cấp chứng chỉ được sử dụng để tạo khóa riêng và chứng chỉ gốc công khai.
Mã:
$ sudo apt install easy-rsa

Bước 1.2 - Tạo thư mục cơ sở hạ tầng khóa công khai​

Bước tiếp theo là tạo một cơ sở hạ tầng khóa công khai (PKI) trên máy chủ CA.
Mã:
$ mkdir ~/easy-rsa
Tạo liên kết tượng trưng trỏ đến gói easy-rsa đã cài đặt tập tin.
Mã:
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Hạn chế quyền truy cập vào thư mục PKI.
Mã:
$ chmod 700 /home//easy-rsa
Khởi tạo PKI.
Mã:
$ cd ~/easy-rsa
$ ./easyrsa init-pki
Bạn sẽ nhận được kết quả sau.
Mã:
* Notice: init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: * /home//easy-rsa/pki
* Notice: IMPORTANT: Easy-RSA 'vars' file has now been moved to your PKI above.

Bước 1.3 - Tạo Cơ quan cấp chứng chỉ​

Trước khi có thể tạo khóa riêng và chứng chỉ của CA, bạn cần định cấu hình thông tin tổ chức cho CA đó. Tệp cấu hình vars đã được tạo trong thư mục pki. Mở nó để chỉnh sửa.
Mã:
$ cd ~/easy-rsa
$ nano pki/vars
Tìm các biến sau và bỏ chú thích bằng cách xóa dấu thăng (#) ở phía trước và chỉnh sửa như hình minh họa bên dưới.
Mã:
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 "Howtoforge"
set_var EASYRSA_REQ_EMAIL "[emailprotected]"
set_var EASYRSA_REQ_OU "Community"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chạy lệnh sau để tạo cặp khóa công khai và riêng tư gốc cho Cơ quan cấp chứng chỉ của bạn.
Mã:
$ ./easyrsa build-ca
Bạn sẽ được nhắc nhập mật khẩu cho cặp khóa của mình. Chọn một mật khẩu mạnh và ghi chú lại để dùng sau. Tiếp theo, bạn sẽ được yêu cầu nhập mật khẩu PEM. Bạn cũng sẽ được yêu cầu nhập Tên chung (CN) cho CA của mình. Bạn có thể nhập bất kỳ chuỗi nào nhưng để đơn giản, hãy nhấn ENTER để chấp nhận tên mặc định.
Mã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
Using configuration from /home//easy-rsa/pki/ab18123c/temp.918764ef
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
* Notice:
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home//easy-rsa/pki/ca.crt
Nếu bạn không muốn bị nhắc nhập mật khẩu mỗi khi tương tác với CA, bạn có thể sử dụng lệnh sau thay thế.
Mã:
$ ./easyrsa build-ca nopass
Điều này sẽ tạo ra hai tệp:
  • ~/easy-rsa/pki/ca.crt là tệp chứng chỉ công khai của CA. Mọi người dùng và máy chủ OpenVPN sẽ cần một bản sao của tệp này.
  • ~/easy-rsa/pki/private/ca.key là khóa riêng do CA sử dụng để ký chứng chỉ cho máy chủ và máy khách OpenVPN. Nếu kẻ tấn công có quyền truy cập vào CA của bạn và sau đó là tệp ca.key của bạn, bạn sẽ cần phải hủy CA của mình. Đây là lý do tại sao tệp ca.key của bạn chỉ nên nằm trên máy CA của bạn và lý tưởng nhất là máy CA của bạn nên được giữ ngoại tuyến khi không ký yêu cầu chứng chỉ như một biện pháp bảo mật bổ sung.

Bước 2 - Cài đặt OpenVPN và Easy-RSA trên máy chủ OpenVPN​

Đăng nhập vào máy chủ OpenVPN của bạn và cài đặt OpenVPN và Easy-RSA gói.
Mã:
$ sudo apt install openvpn easy-rsa
Tạo thư mục ~/easy-rsa.
Mã:
$ mkdir ~/easy-rsa
Tạo liên kết tượng trưng từ easy-rsa tập lệnh mà chúng tôi đã cài đặt giống như trên máy chủ CA.
Mã:
$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Hạn chế quyền truy cập vào thư mục.
Mã:
$ chmod 700 ~/easy-rsa

Bước 3 - Tạo PKI cho Máy chủ OpenVPN​

Bước tiếp theo là tạo thư mục PKI bằng cách sử dụng tùy chọn init-pki. Mặc dù bạn đã chạy lệnh này trên máy chủ CA như một phần của các điều kiện tiên quyết, nhưng bạn cần phải chạy lệnh này ở đây vì máy chủ OpenVPN và máy chủ CA của bạn có các thư mục PKI riêng biệt.
Mã:
$ cd ~/easy-rsa
$ ./easyrsa init-pki
PKI trên máy chủ OpenVPN được sử dụng làm nơi tập trung để lưu trữ các yêu cầu cấp chứng chỉ và chứng chỉ công khai.

Mở thư mục ~/easy-rsa/pki/vars để lưu trữ thông tin cần thiết để tạo PKI và mở nó để chỉnh sửa.
Mã:
$ nano pki/vars
Tìm các biến sau và bỏ chú thích bằng cách xóa dấu thăng (#) trước chúng và thay đổi giá trị của chúng như bên dưới.
Mã:
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Vì chúng ta không sử dụng máy chủ là CA, đây là những giá trị duy nhất chúng ta cần. Điều này cấu hình máy chủ OpenVPN & CA của bạn để sử dụng ECC, nghĩa là khi máy khách và máy chủ cố gắng thiết lập khóa đối xứng được chia sẻ, chúng sẽ sử dụng thuật toán Elliptic Curve để thực hiện trao đổi. Nó nhanh hơn đáng kể so với việc sử dụng Diffie-Hellman thông thường với thuật toán RSA cổ điển vì các số nhỏ hơn nhiều và tính toán nhanh hơn.

Bước 4 - Tạo Yêu cầu chứng chỉ máy chủ OpenVPN và Khóa riêng​

Chuyển sang thư mục ~/easy-rsa trên OpenVPN máy chủ.
Mã:
$ cd ~/easy-rsa
Bước tiếp theo là tạo khóa riêng và Yêu cầu ký chứng chỉ (CSR) trên máy chủ OpenVPN của bạn. Chạy lệnh easy-rsa với tùy chọn gen-req theo sau là Tên chung (CN) cho máy chủ. Trong hướng dẫn này, chúng tôi sẽ sử dụng server làm CN cho máy chủ OpenVPN. Chúng tôi cũng sẽ sử dụng tùy chọn nopass để tránh mọi vấn đề về quyền.
Mã:
$ ./easyrsa gen-req server nopass
Bạn sẽ nhận được kết quả đầu ra sau.
Mã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:
* Notice:
Keypair and certificate request completed. Your files are:
req: /home//easy-rsa/pki/reqs/server.req
key: /home//easy-rsa/pki/private/server.key
Điều này tạo ra một khóa riêng cho máy chủ và một tệp yêu cầu chứng chỉ có tên là server.req. Sao chép khóa máy chủ vào thư mục /etc/openvpn/server.
Mã:
$ sudo cp /home//easy-rsa/pki/private/server.key /etc/openvpn/server/
Yêu cầu ký chứng chỉ (CSR) hiện đã sẵn sàng để CA ký.

Bước 5 - Ký máy chủ OpenVPN CSR​

Bước tiếp theo là sao chép tệp CSR vào máy chủ CA để ký. Nếu máy chủ của bạn bật xác thực bằng mật khẩu, bạn chỉ cần sử dụng lệnh sau để sao chép tệp.
Mã:
$ scp /home/username/easy-rsa/pki/reqs/server.req username@your_ca_server_ip:/tmp
Nếu bạn không muốn sử dụng xác thực bằng mật khẩu, bạn sẽ cần tạo cặp khóa SSH cho từng máy chủ, sau đó thêm khóa SSH công khai của Máy chủ OpenVPN vào tệp authorized_keys của máy CA và ngược lại.

Nếu bạn không muốn trải qua tất cả những điều này, bạn chỉ cần sao chép các tệp. Mở tệp trên máy chủ OpenVPN, sao chép nội dung của nó, sau đó tạo tệp trên máy chủ CA và dán nội dung.

Đăng nhập lại vào Máy chủ CA và chuyển đến thư mục ~/easy-rsa và nhập tệp CSR.
Mã:
$ cd ~/easy-rsa
$ ./easyrsa import-req /tmp/server.req server
Bạn sẽ nhận được thông báo sau đầu ra.
Mã:
* Notice:
Using Easy-RSA configuration from: /home/navjot/easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
* Notice:
The request has been successfully imported with a short name of: server
You may now use this name to perform signing operations on this request.
Ký yêu cầu bằng lệnh sau. Vì chúng ta đang ký CSR của máy chủ OpenVPN, chúng ta sẽ sử dụng Common Name (CN) của nó.
Mã:
$ ./easyrsa sign-req server server
Bạn sẽ được nhắc xác minh xem yêu cầu có đến từ nguồn đáng tin cậy hay không. Nhập yes sau đó nhấn phím ENTER để xác nhận.
Mã:
* Notice:
Using Easy-RSA configuration from: /home/navjot/easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 825 days:
subject= commonName = server
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes
Tiếp theo, bạn sẽ được nhắc nhập mật khẩu khóa riêng CA mà bạn đã thiết lập trước đó.
Mã:
Using configuration from /home//easy-rsa/pki/de50cb3f/temp.93caaa8c
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
00F7EDB7:error:0700006C:configuration file routines:NCONF_get_string:no value:../crypto/conf/conf_lib.c:315:group= name=unique_subject
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'server'
Certificate is to be certified until Nov 10 07:48:56 2025 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
* Notice:
Certificate created at: /home//easy-rsa/pki/issued/server.crt
Chứng chỉ kết quả chứa khóa mã hóa công khai của máy chủ OpenVPN cũng như chữ ký từ máy chủ CA. Sao chép chứng chỉ trở lại máy chủ OpenVPN.
Mã:
$ scp pki/issued/server.crt username@your_vpn_server_ip:/tmp
$ scp pki/ca.crt username@your_vpn_server_ip:/tmp
Trên máy chủ OpenVPN của bạn, sao chép các tệp vào /etc/openvpn/server thư mục.
Mã:
$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Bước 6 - Cấu hình OpenVPN Cryptographic Material​

Chúng tôi sẽ thêm một khóa bí mật chia sẻ bổ sung mà máy chủ và tất cả các máy khách sẽ sử dụng với chỉ thị tls-crypt của OpenVPN. Điều này đảm bảo rằng máy chủ OpenVPN có thể xử lý lưu lượng truy cập không xác thực, quét cổng và các cuộc tấn công Từ chối dịch vụ. Nó cũng làm cho việc xác định lưu lượng mạng OpenVPN trở nên khó khăn hơn.

Chuyển sang thư mục ~/easy-rsa.
Mã:
$ cd ~/easy-rsa
Tạo khóa Diffie-Hellman mạnh để sử dụng trong quá trình trao đổi khóa bằng cách sử dụng lệnh sau lệnh.
Mã:
$ ./easyrsa gen-dh
Tạo khóa chia sẻ trước tls-crypt. Thao tác này sẽ tạo một tệp có tên là ta.key
Mã:
$ sudo openvpn --genkey secret ta.key
Sao chép ta.key đến /etc/openvpn/server thư mục.
Mã:
$ sudo cp ta.key /etc/openvpn/server
$ sudo cp pki/dh.pem /etc/openvpn/server

Bước 7 - Tạo Chứng chỉ máy khách và Cặp khóa​

Tạo một thư mục trên máy chủ VPN của bạn để lưu trữ chứng chỉ máy khách và các tệp khóa.
Mã:
$ mkdir -p ~/client-configs/keys
Hạn chế quyền đối với thư mục để bảo vệ nó.
Mã:
$ chmod -R 700 ~/client-configs
Tiếp theo, chuyển sang ~/easy-rsa thư mục.
Mã:
$ cd ~/easy-rsa
Tạo khóa máy khách với client1 làm Tên chung cho máy khách. Bạn có thể sử dụng bất kỳ CN nào cho máy khách.
Mã:
$ ./easyrsa gen-req client1 nopass
Nhấn ENTER để xác nhận tên chung. Bạn sẽ nhận được kết quả sau.
Mã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [client1]:
* Notice:
Keypair and certificate request completed. Your files are:
req: /home//easy-rsa/pki/reqs/client1.req
key: /home//easy-rsa/pki/private/client1.key
Tiếp theo, sao chép tệp client1.key vào ~/client-configs/keys thư mục.
Mã:
$ cp pki/private/client1.key ~/client-configs/keys/
Chuyển client1.req tệp vào máy chủ CA.
Mã:
$ scp pki/reqs/client1.req username@your_ca_server_ip:/tmp
Đăng nhập lại vào máy chủ CA và nhập máy chủ yêu cầu.
Mã:
$ cd ~/easy-rsa
$ ./easyrsa import-req /tmp/client1.req client1
Bạn sẽ nhận được kết quả đầu ra sau.
Mã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
* Notice:
The request has been successfully imported with a short name of: client1
You may now use this name to perform signing operations on this request.
Ký yêu cầu bằng lệnh sau. Chúng tôi đang sử dụng client làm loại yêu cầu.
Mã:
$ ./easyrsa sign-req client client1
Khi được nhắc, hãy nhập yes để xác nhận ký yêu cầu và yêu cầu đó đến từ một nguồn đáng tin cậy.
Mã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a client certificate for 825 days:
subject= commonName = client1
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes
Bạn sẽ được nhắc nhập mật khẩu CA.
Mã:
Using configuration from /home//easy-rsa/pki/7bf6e9b1/temp.c01d673d
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'client1'
Certificate is to be certified until Nov 10 08:25:10 2025 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
* Notice:
Certificate created at: /home//easy-rsa/pki/issued/client1.crt
Chuyển chứng chỉ đã tạo trở lại máy chủ OpenVPN.
Mã:
$ scp pki/issued/client1.crt username@your_server_ip:/tmp
Trên máy chủ OpenVPN, sao chép chứng chỉ máy khách vào ~/client-configs/keys thư mục.
Mã:
$ cp /tmp/client1.crt ~/client-configs/keys/
Sao chép ca.crtta.key các tệp vào ~/client-configs/keys thư mục và thiết lập các quyền thích hợp cho máy chủ hiện đang đăng nhập của bạn.
Mã:
$ sudo cp ~/easy-rsa/ta.key ~/client-configs/keys/
$ sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
$ sudo chown username.username ~/client-configs/keys/*

Bước 8 - Cấu hình OpenVPN​

Sao chép mẫu server.conf tệp làm điểm bắt đầu để cấu hình OpenVPN.
Mã:
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/openvpn/server/server.conf
Tìm phần HMAC của tệp bằng cách tìm kiếm Chỉ thị tls-auth. Bình luận dòng bằng cách thêm dấu chấm phẩy (;) vào đầu dòng. Thêm một dòng mới bên dưới như minh họa.
Mã:
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key
Tiếp theo, thay đổi giá trị mã hóa bằng cách tìm kiếm các dòng cipher. Giá trị mặc định được đặt thành AES-256-CBC. Bình luận giá trị mặc định và thêm một dòng khác với mã hóa AES-256-GCM cung cấp mức độ mã hóa tốt hơn và hiệu suất như đã hiển thị.
Mã:
;cipher AES-256-CBC
cipher AES-256-GCM
Ngay bên dưới, thêm Chỉ thị auth để chọn thuật toán tóm tắt thông điệp HMAC.
Mã:
auth SHA256
Vì chúng ta đang sử dụng Mật mã đường cong Elliptic, nên chúng ta cần tắt mã hóa Diffie-Hellman. Bình luận dòng dh dh2048.pem và thêm dh none bên dưới nó.
Mã:
;dh dh2048.pem
dh none
OpenVPN sẽ chạy mà không cần bất kỳ đặc quyền nào sau khi đã khởi động. Để bật tính năng này, hãy tìm và bỏ chú thích cho các dòng ;user openvpn;group openvpn và thay đổi chúng thành đã hiển thị.
Mã:
user nobody
group nogroup

Chuyển hướng tất cả lưu lượng qua VPN​

Các thiết lập ở trên tạo kết nối VPN giữa máy khách và máy chủ, nhưng sẽ không buộc bất kỳ kết nối nào sử dụng đường hầm. Để thực hiện, hãy bắt đầu bằng cách tìm dòng push "redirect-gateway def1 bypass-dhcp". Dòng này yêu cầu máy khách chuyển hướng toàn bộ lưu lượng truy cập của mình qua máy chủ OpenVPN. Bỏ chú thích dòng này để bật chức năng.
Mã:
push "redirect-gateway def1 bypass-dhcp"
Tìm phần dhcp-option bên dưới dòng này. Xóa dấu chấm phẩy ở đầu cả hai dòng. Điều này cho biết máy khách sử dụng bộ giải quyết OpenDNS.
Mã:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Thay đổi cổng và giao thức​

OpenVPN sử dụng cổng 1194 và giao thức UDP theo mặc định để chấp nhận kết nối máy khách. Bạn có thể thay đổi cổng tùy theo nhu cầu của mình. Nếu bạn không lưu trữ nội dung web trên máy chủ OpenVPN của mình, bạn có thể sử dụng cổng 443.

Tìm dòng port 1194 và thay đổi giá trị của nó.
Mã:
# Optional!
port 443
Tìm proto udp và bình luận bằng cách thêm dấu chấm phẩy vào trước dòng đó. Và, bỏ chú thích dòng proto tcp bằng cách xóa dấu chấm phẩy như hình minh họa.
Mã:
proto tcp
;proto udp
Vì chúng ta đang sử dụng giao thức TCP, chúng ta cần thay đổi giá trị của explicit-exit-notify chỉ thị từ 1 đến 0, vì chỉ thị này chỉ được UDP sử dụng.
Mã:
explicit-exit-notify 0

Trỏ đến thông tin xác thực không mặc định​

Nếu bạn đã chọn một tên khác trong lệnh ./easy-rsa gen-req server trước đó, bạn cần sửa đổi certkey các dòng sao cho chúng trỏ đến các dòng .crt.key thích hợp tệp. Vì chúng tôi đang sử dụng tên mặc định server, giá trị mặc định là đúng.
Mã:
cert server.crt
key server.key
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 9 - Điều chỉnh cấu hình mạng máy chủ OpenVPN​

Bước tiếp theo là cấu hình cấu hình mạng của máy chủ để cho phép OpenVPN định tuyến lưu lượng truy cập một cách chính xác. Điều đầu tiên chúng ta cần cấu hình là Chuyển tiếp cổng.

Mở tệp /etc/sysctl.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/sysctl.conf
Thêm dòng sau vào cuối tệp.
Mã:
net.ipv4.ip_forward = 1
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Để đọc tệp và tải các giá trị mới cho phiên hiện tại, hãy sử dụng lệnh sau.
Mã:
$ sudo sysctl -p
vm.swappiness = 0
net.ipv4.ip_forward = 1
Cấu hình này sẽ định tuyến tất cả lưu lượng truy cập web từ máy khách của bạn qua địa chỉ IP của máy chủ và địa chỉ công khai của máy khách của bạn Địa chỉ IP sẽ được ẩn hiệu quả.

Bước 10 - Cấu hình Tường lửa​

Để cho phép OpenVPN đi qua tường lửa, bạn cần bật chế độ ngụy trang, một khái niệm của iptables cung cấp dịch vụ chuyển đổi địa chỉ mạng động (NAT) tức thời để định tuyến chính xác các kết nối của máy khách.

Trước khi mở tệp cấu hình tường lửa để thêm các quy tắc ngụy trang, trước tiên, hãy tìm giao diện mạng công cộng của máy bạn bằng lệnh sau.
Mã:
$ ip route list default
Bạn sẽ nhận được thông báo tương tự đầu ra.
Mã:
default via 69.28.90.1 dev ens3 onlink
Điều này cho chúng ta biết rằng tên giao diện là ens3. Mở tệp /etc/ufw/before.rules để chỉnh sửa.
Mã:
$ sudo nano /etc/ufw/before.rules
Các quy tắc này được đọc và đưa vào vị trí trước khi các quy tắc UFW thông thường được tải. Thêm các dòng sau vào đầu tệp như minh họa.
Mã:
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to ens3 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o ens3 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tiếp theo, chúng ta cần cấu hình UFW để cho phép các gói được chuyển tiếp theo mặc định. Mở tệp /etc/default/ufw để chỉnh sửa.
Mã:
$ sudo nano /etc/default/ufw
Tìm DEFAULT_FORWARD_POLICY chỉ thị và thay đổi giá trị của nó từ DROP thành ACCEPT.
Mã:
DEFAULT_FORWARD_POLICY="ACCEPT"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Và cuối cùng, mở cổng 443 mà bạn đã cấu hình trước đó cho OpenVPN máy chủ.
Mã:
$ sudo ufw allow 443/tcp
Tắt và bật tường lửa để áp dụng cấu hình mới.
Mã:
$ sudo ufw disable
$ sudo ufw enable

Bước 11 - Khởi động OpenVPN​

Khởi động OpenVPN dịch vụ.
Mã:
$ sudo systemctl start [emailprotected]
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status [emailprotected]
Bạn sẽ nhận được kết quả tương tự.
Mã:
? [emailprotected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[emailprotected]; disabled; preset: enabled) Active: active (running) since Tue 2023-08-08 09:22:49 UTC; 7s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 4531 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 2315) Memory: 1.4M CPU: 27ms CGroup: /system.slice/system-openvpn\x2dserver.slice/[emailprotected] ??4531 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
Aug 08 09:22:49 vpnserver openvpn[4531]: TCPv4_SERVER link local (bound): [AF_INET][undef]:443
Aug 08 09:22:49 vpnserver openvpn[4531]: TCPv4_SERVER link remote: [AF_UNSPEC]
Aug 08 09:22:49 vpnserver openvpn[4531]: UID set to nobody
Aug 08 09:22:49 vpnserver openvpn[4531]: GID set to nogroup
Aug 08 09:22:49 vpnserver openvpn[4531]: Capabilities retained: CAP_NET_ADMIN
Aug 08 09:22:49 vpnserver openvpn[4531]: MULTI: multi_init called, r=256 v=256
Aug 08 09:22:49 vpnserver openvpn[4531]: IFCONFIG POOL IPv4: base=10.8.0.4 size=62
Aug 08 09:22:49 vpnserver openvpn[4531]: IFCONFIG POOL LIST
Aug 08 09:22:49 vpnserver openvpn[4531]: MULTI: TCP INIT maxclients=1024 maxevents=1029
Aug 08 09:22:49 vpnserver openvpn[4531]: Initialization Sequence Completed
Cho phép dịch vụ OpenVPN khởi động khi khởi động.
Mã:
$ sudo systemctl -f enable [emailprotected]

Bước 12 - Tạo cấu hình máy khách​

Trước khi kiểm tra máy khách, chúng ta cần tạo các tệp cấu hình cho máy khách mà chúng ta sẽ sử dụng. Tạo một thư mục để lưu trữ các tệp cấu hình máy khách.
Mã:
$ mkdir -p ~/client-configs/files
Sao chép tệp cấu hình máy khách mẫu vào thư mục.
Mã:
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Mở tệp cấu hình cho chỉnh sửa.
Mã:
$ nano ~/client-configs/base.conf
Tìm lệnh remote và đặt lệnh này để trỏ đến địa chỉ IP công khai của Máy chủ OpenVPN của bạn. Ngoài ra, hãy thay đổi cổng để khớp với cổng bạn đã chọn trước đó.
Mã:
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 443
. . .
Thiết lập giao thức bạn đã chọn trước đó bằng cách bỏ chú thích và chú thích ra proto udp thiết lập.
Mã:
proto tcp
Bỏ chú thích usergroup chỉ thị bằng cách xóa dấu chấm phẩy ở phía trước chúng. Ngoài ra, hãy thay đổi các giá trị như sau.
Mã:
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Tìm ca, certkey và chú thích chúng bằng cách đặt dấu chấm phẩy trước chúng. Điều này là do chúng ta sẽ thêm các chứng chỉ và khóa vào tệp cấu hình máy khách.
Mã:
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
;ca ca.crt
;cert client.crt
;key client.key
Bình luận lệnh tls-auth vì chúng ta sẽ thêm ta.key trực tiếp vào tệp cấu hình máy khách.
Mã:
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1
So khớp cipher thiết lập mà bạn đặt trong tệp `/etc/openvpn/server/server.conf. Ngoài ra, hãy thêm cài đặt auth ở cuối tệp.
Mã:
cipher AES-256-GCM
....
auth SHA256
Thêm key-direction chỉ thị và đặt nó thành 1 để VPN hoạt động chính xác.
Mã:
key-direction 1
Tiếp theo, thêm một vài dòng được chú thích để xử lý các phương pháp khác nhau mà máy khách VPN sử dụng để phân giải DNS. Thêm tập hợp các dòng sau cho các máy khách không sử dụng systemd-resolved nhưng dựa vào tiện ích resolvconf để quản lý DNS.
Mã:
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
Thêm tập hợp các dòng sau cho các máy khách sử dụng systemd-resolved cho DNS độ phân giải.
Mã:
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo một tập lệnh để biên dịch cấu hình cơ sở với các tệp chứng chỉ, khóa và mã hóa có liên quan, sau đó sao chép tệp cấu hình đã tạo vào thư mục ~/client-configs/files.

Tạo và mở tệp make_config.sh trong ~/client-configs thư mục.
Mã:
$ nano ~/client-configs/make_config.sh
Dán mã sau vào nó.
Mã:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/home//client-configs/keys
OUTPUT_DIR=/home//client-configs/files
BASE_CONFIG=/home//client-configs/base.conf
cat ${BASE_CONFIG} \  ${OUTPUT_DIR}/${1}.ovpn
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Làm cho tệp có thể thực thi và hạn chế quyền đối với tệp đó.
Mã:
$ chmod 700 ~/client-configs/make_config.sh
Tập lệnh này tạo một bản sao của base.conf, thu thập tất cả các tệp chứng chỉ và khóa, trích xuất nội dung của chúng, thêm chúng vào tệp cấu hình cơ sở và xuất tất cả các tệp đó để tạo tệp cấu hình máy khách mới. Mỗi khi bạn thêm một máy khách mới, bạn cần tạo khóa và chứng chỉ mới cho máy khách đó, sau đó chạy tập lệnh này để tạo tệp cấu hình máy khách.

Chúng tôi đã tạo tệp chứng chỉ và khóa máy khách ở bước 7. Hãy tạo tệp cấu hình cho tệp này.

Chuyển sang ~/client-configs thư mục.
Mã:
$ cd ~/client-configs
Chạy tập lệnh để tạo tệp cấu hình máy khách.
Mã:
$ ./make_config.sh client1
Điều này sẽ tạo một tệp có tên client1.ovpn. Thay đổi tham số nếu bạn muốn tên tệp khác. Kiểm tra nội dung thư mục.
Mã:
$ ls ~/client-configs/files
client1.ovpn
Đây là tệp cấu hình bạn cần chuyển đến máy khách, sau đó sẽ được sử dụng để kết nối với máy chủ OpenVPN. Bạn có thể sử dụng bất kỳ giao thức/chương trình SFTP nào để truyền tệp đến máy khách.

Bước 13 - Cài đặt và kiểm tra kết nối máy khách​

Trong hướng dẫn này, chúng tôi sử dụng máy khách Debian 12. Cài đặt OpenVPN thông qua lệnh sau.
Mã:
$ sudo apt install openvpn
Kiểm tra xem hệ thống của bạn có đang sử dụng systemd-resolved để quản lý các truy vấn DNS hay không bằng cách chạy lệnh sau lệnh.
Mã:
$ cat /etc/resolv.conf
Bạn sẽ nhận được kết quả tương tự.
Mã:
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
Nếu hệ thống đang sử dụng systemd-resolved, thì địa chỉ IP ở trên sẽ là 127.0.0.53. Ngoài ra, bình luận ở đầu tệp sẽ xác nhận điều tương tự. Nếu địa chỉ IP không phải là 127.0.0.53, thì hệ thống không sử dụng systemd-resolved và bạn cần làm theo các bước được đề cập sau.

Nhưng trước tiên, hãy tải xuống client1.ovpn tệp từ máy chủ bằng lệnh sau.
Mã:
$ scp username@your_server_ip:/home//client-configs/files/client1.ovpn

Đối với khách hàng có systemd-resolved

Cài đặt gói openvpn-systemd-resolved cung cấp các tập lệnh buộc systemd-resolved để sử dụng máy chủ VPN cho DNS.
Mã:
$ sudo apt install openvpn-systemd-resolved
Mở tệp cấu hình Máy khách cho chỉnh sửa.
Mã:
$ nano client1.ovpn
Bỏ chú thích các dòng sau trong tệp bằng cách xóa dấu chấm phẩy ở phía trước chúng.
Mã:
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Đối với máy khách có update-resolv-conf

Đây là bước bạn cần thực hiện nếu bạn có hệ thống Debian. Trước tiên, hãy xác nhận rằng bản phân phối của bạn đang sử dụng update-resolv-conf.
Mã:
$ ls /etc/openvpn
client server update-resolv-conf
Nếu hệ thống của bạn chứa tệp update-resolv-conf, hãy mở tệp cấu hình Máy khách để chỉnh sửa.
Mã:
$ nano client1.ovpn
Bỏ chú thích các dòng sau trong tệp bằng cách xóa dấu chấm phẩy ở phía trước chúng.
Mã:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Nếu bạn đang sử dụng bản phân phối dựa trên CentOS, hãy thay đổi group chỉ thị từ nogroup đến nobody.
Mã:
group nobody
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Kết nối máy khách​

Chạy lệnh sau để kết nối máy khách với VPN máy chủ.
Mã:
$ sudo openvpn --config client1.ovpn
Bạn sẽ nhận được kết quả tương tự.
Mã:
2023-08-08 16:23:29 Note: Kernel support for ovpn-dco missing, disabling data channel offload.
2023-08-08 16:23:29 OpenVPN 2.6.3 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO]
2023-08-08 16:23:29 library versions: OpenSSL 3.0.9 30 May 2023, LZO 2.10
2023-08-08 16:23:29 DCO version: N/A
2023-08-08 16:23:29 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2023-08-08 16:23:29 TCP/UDP: Preserving recently used remote address: [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 Socket Buffers: R=[131072->131072] S=[16384->16384]
2023-08-08 16:23:29 Attempting to establish TCP connection with [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 TCP connection established with [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 TCPv4_CLIENT link local: (not bound)
2023-08-08 16:23:29 TCPv4_CLIENT link remote: [AF_INET]69.28.91.204:443
2023-08-08 16:23:29 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
2023-08-08 16:23:29 TLS: Initial packet from [AF_INET]69.28.91.204:443, sid=6bd67e12 50ebf8bc
2023-08-08 16:23:30 VERIFY OK: depth=1, CN=Easy-RSA CA
2023-08-08 16:23:30 VERIFY KU OK
2023-08-08 16:23:30 Validating certificate extended key usage
2023-08-08 16:23:30 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2023-08-08 16:23:30 VERIFY EKU OK
2023-08-08 16:23:30 VERIFY OK: depth=0, CN=server
2023-08-08 16:23:30 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 384 bit ECsecp384r1, signature: ecdsa-with-SHA512
2023-08-08 16:23:30 [server] Peer Connection Initiated with [AF_INET]69.28.91.204:443
2023-08-08 16:23:30 TLS: move_session: dest=TM_ACTIVE src=TM_INITIAL reinit_src=1
2023-08-08 16:23:30 TLS: tls_multi_process: initial untrusted session promoted to trusted
2023-08-08 16:23:31 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
2023-08-08 16:23:31 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM,protocol-flags cc-exit tls-ekm dyn-tls-crypt,tun-mtu 1500'
2023-08-08 16:23:31 OPTIONS IMPORT: --ifconfig/up options modified
2023-08-08 16:23:31 OPTIONS IMPORT: route options modified
2023-08-08 16:23:31 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2023-08-08 16:23:31 OPTIONS IMPORT: tun-mtu set to 1500
2023-08-08 16:23:31 net_route_v4_best_gw query: dst 0.0.0.0
2023-08-08 16:23:31 net_route_v4_best_gw result: via 10.0.2.2 dev enp0s3
2023-08-08 16:23:31 ROUTE_GATEWAY 10.0.2.2/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:b7:cc:29
2023-08-08 16:23:31 TUN/TAP device tun0 opened
2023-08-08 16:23:31 net_iface_mtu_set: mtu 1500 for tun0
2023-08-08 16:23:31 net_iface_up: set tun0 up
2023-08-08 16:23:31 net_addr_ptp_v4_add: 10.8.0.6 peer 10.8.0.5 dev tun0
2023-08-08 16:23:31 /etc/openvpn/update-resolv-conf tun0 1500 0 10.8.0.6 10.8.0.5 init
2023-08-08 16:23:31 net_route_v4_add: 69.28.91.204/32 via 10.0.2.2 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 net_route_v4_add: 0.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 net_route_v4_add: 128.0.0.0/1 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 net_route_v4_add: 10.8.0.1/32 via 10.8.0.5 dev [NULL] table 0 metric -1
2023-08-08 16:23:31 UID set to nobody
2023-08-08 16:23:31 GID set to nogroup
2023-08-08 16:23:31 Capabilities retained: CAP_NET_ADMIN
2023-08-08 16:23:31 Initialization Sequence Completed
2023-08-08 16:23:31 Data Channel: cipher 'AES-256-GCM', peer-id: 0
2023-08-08 16:23:31 Timers: ping 10, ping-restart 120
2023-08-08 16:23:31 Protocol options: protocol-flags cc-exit tls-ekm dyn-tls-crypt
Bạn có thể xác minh kết nối bằng cách truy cập URL https://whatismyip.com trong trình duyệt của bạn và bạn sẽ thấy địa chỉ IP và vị trí máy chủ OpenVPN của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22479%22%20height=%22284%22%3E%3C/svg%3E


Bạn cũng có thể xác minh thêm bằng cách thực hiện một bài kiểm tra tiêu chuẩn trên https://www.dnsleaktest.com/ trang web.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E


Bạn có thể thấy địa chỉ IP của Google vì địa chỉ IP mà chúng tôi lấy được từ resolv.conf trên máy khách và vị trí của chúng nằm ở Hoa Kỳ, khớp với vị trí của máy chủ OpenVPN mà chúng tôi đã sử dụng.

Lệnh trên chạy OpenVPN ở chế độ nền trước, nghĩa là thiết bị đầu cuối sẽ bị chặn. Để đóng kết nối, bạn cần nhấn Ctrl + C. Tuy nhiên, bạn cũng có thể chạy OpenVPN ở chế độ nền. Sử dụng lệnh sau để thực hiện điều đó.
Mã:
sudo openvpn --config client1.ovpn --daemon
Để tắt kết nối, hãy tìm ID tiến trình của tiến trình đó.
Mã:
$ ps aux | grep openvpn
Bạn sẽ nhận được thông báo tương tự đầu ra.
Mã:
nobody 4357 0.3 0.0 13468 8432 ? Ss 15:35 0:00 openvpn --config client1.ovpn --daemon
username 4406 0.0 0.0 17732 2432 pts/0 S+ 15:35 0:00 grep --color=auto openvpn
Như bạn thấy, ID tiến trình tương ứng với tiến trình OpenVPN là 4357. Tắt kết nối VPN bằng lệnh sau để kết thúc tiến trình.
Mã:
$ sudo kill -9 4357
OpenVPN cung cấp các ứng dụng khách GUI cho Windows, macOS, Androidnền tảng iOS nơi bạn có thể nhập tệp cấu hình máy khách để kết nối.

Bước 14 - Thu hồi chứng chỉ máy khách​

Nếu bạn muốn thu hồi chứng chỉ của máy khách để ngăn chặn quyền truy cập, bạn có thể thực hiện bằng cách đăng nhập vào máy chủ CA.

Chuyển sang ~/easy-rsa thư mục.
Mã:
$ cd ~/easy-rsa
Chạy tập lệnh với tùy chọn revoke theo sau là máy khách tên.
Mã:
$ ./easyrsa revoke client1
Bạn sẽ được nhắc nếu bạn muốn thu hồi chứng chỉ.
Mã:
* Notice:
Using Easy-RSA configuration from: /home/navjot/easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023) Please confirm you wish to revoke the certificate with the following subject: subject= commonName = client1 serial-number: A38D324EC106628F53D1ADFCF8F2D706
Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes
Nếu khóa riêng CA của bạn được bảo vệ bằng cụm mật khẩu, hãy nhập cụm mật khẩu đó khi được nhắc.
Mã:
Using configuration from /home//easy-rsa/pki/a02dc925/temp.0b5d5ab5
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
Revoking Certificate A38D324EC106628F53D1ADFCF8F2D706.
Data Base Updated
* Notice:
IMPORTANT!!!
Revocation was successful. You must run gen-crl and upload a CRL to your
infrastructure in order to prevent the revoked cert from being accepted.
Điều này sẽ thu hồi chứng chỉ trên máy chủ CA. Tuy nhiên, máy chủ OpenVPN không có cách nào để kiểm tra trạng thái thu hồi. Để thực hiện được điều đó, chúng ta cần tạo Danh sách thu hồi chứng chỉ (CRL) và chuyển nó đến máy chủ OpenVPN.

Tạo CRL.
Mã:
$ ./easyrsa gen-crl
Bạn sẽ được nhắc nhập mật khẩu CA. Lệnh trên tạo ra một tệp crl.pem.
Mã:
* Notice:
Using Easy-RSA configuration from: /home//easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.9 30 May 2023 (Library: OpenSSL 3.0.9 30 May 2023)
Using configuration from /home//easy-rsa/pki/bce6b789/temp.522aebf7
Enter pass phrase for /home//easy-rsa/pki/private/ca.key:
* Notice:
An updated CRL has been created.
CRL file: /home//easy-rsa/pki/crl.pem
Sao chép tệp này vào OpenVPN máy chủ.
Mã:
$ scp ~/easy-rsa/pki/crl.pem username@your_server_ip:/tmp
Đăng nhập lại vào máy chủ OpenVPN và sao chép tệp CRL vào /etc/openvpn/server thư mục.
Mã:
$ sudo cp /tmp/crl.pem /etc/openvpn/server/
Mở tệp cấu hình máy chủ OpenVPN để chỉnh sửa.
Mã:
$ sudo nano /etc/openvpn/server/server.conf
Thêm dòng sau vào cuối tệp. Thao tác này hướng dẫn máy chủ OpenVPN kiểm tra danh sách thu hồi đối với các máy khách đã bị hạn chế.
Mã:
crl-verify crl.pem
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại máy chủ OpenVPN để áp dụng các thay đổi.
Mã:
sudo systemctl restart [emailprotected]
Máy khách không thể kết nối với Máy chủ OpenVPN nữa.

Kết luận​

Bài hướng dẫn về cài đặt và cấu hình máy chủ OpenVPN trên máy chủ Debian 12 của chúng tôi đã kết thúc. Chúng tôi cũng đã kết nối máy khách OpenVPN Linux với máy chủ. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên