Tạo hồ sơ OpenVPN cho người dùng khách hàng nhập


40

Có tài liệu hoặc tài nguyên nào mô tả cách tạo và lưu trữ hồ sơ cho máy khách OpenVPN để nhập không? Lý tưởng nhất là người dùng của tôi không phải tìm nạp riêng một tệp .zip của .ovpn + certs, giải nén nó vào thư mục thích hợp, chỉnh .ovpn của họ, v.v.

Câu trả lời:


40

Rõ ràng vì OpenVPN 2.1, một cấu hình nội tuyến đã được hỗ trợ. Cho phép bạn xác định vị trí certs của mình và tất cả các khóa trong một tệp cấu hình. Nhưng tài liệu về cách tạo tập tin cấu hình này đã không được thêm vào cho đến khi phát hành 2.3 gần đây.

Xem INLINE FILE SUPPORTphần của trang người dùng OpenVPN để biết thêm thông tin.

client
proto udp
remote openvpnserver.example.com
port 1194
dev tun
nobind

key-direction 1

<ca>
-----BEGIN CERTIFICATE-----
# insert base64 blob from ca.crt
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
# insert base64 blob from client1.crt
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
# insert base64 blob from client1.key
-----END PRIVATE KEY-----
</key>

<tls-auth>
-----BEGIN OpenVPN Static key V1-----
# insert ta.key
-----END OpenVPN Static key V1-----
</tls-auth>

Các tài liệu cho tệp cấu hình giống như các tài liệu cho các tùy chọn dòng lệnh:

OpenVPN cho phép bất kỳ tùy chọn nào được đặt trên dòng lệnh hoặc trong tệp cấu hình. Mặc dù tất cả các tùy chọn dòng lệnh được đi trước bởi dấu gạch ngang kép ("-"), tiền tố này có thể được loại bỏ khi một tùy chọn được đặt trong tệp cấu hình.


Không thể làm cho nó hoạt động với Windows Connect Client ( openvpn.net/?option=com_content&id=357 ), nó phàn nàn về một cái gì đó giống như Could not read file C:\\...\[inline]vậy mà dường như khách hàng không biết về chứng chỉ nội tuyến (chưa).
Patrick Oscarity

Không biết nó có giúp ích gì không, nhưng tôi chỉ để lại các giá trị cấu hình ca, cert, key và tls-auth và nó hoạt động.
Ikke

2
Bạn nên xóa các dòng bằng [nội tuyến]. Thay vì tls-auth [inline] 1, bạn nên sử dụng tls-direction 1
plaisthos

2
Xin lỗi, đó là hướng chính 1. Đã trộn lẫn. Bản vá của tôi đến trang người đàn ông đã được tích hợp. Xem trang 2.3 man trong PHIM INLINE: Community.openvpn.net/openvpn/wiki/Openvpn23ManPage . Tôi đã sao chép nó vào câu trả lời của chính nó để làm cho nó dễ đọc và dễ truy cập hơn.
plaisthos

1
@Strubbl: xem Bước 10 và 11 của liên kết này digitalocean.com/community/tutorials/iêu
Sai Ramachandran

8

Từ trang man OpenVPN 2.3 (Nó được hỗ trợ từ 2.1rc-Something):

OpenVPN cho phép bao gồm các tệp trong cấu hình chính cho --ca, --cert, --dh, --extra-certs, --key, --pkcs12, --secret--tls-authcác tùy chọn.

Mỗi tệp nội tuyến bắt đầu bằng dòng <option>và kết thúc bởi dòng </option>.

Dưới đây là một ví dụ về việc sử dụng tệp nội tuyến

<cert>
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
</cert>

Khi sử dụng tính năng tệp nội tuyến với --pkcs12tệp nội tuyến phải được mã hóa base64. Mã hóa tệp .p12 thành base64 có thể được thực hiện ví dụ với OpenSSL bằng cách chạyopenssl base64 -in input.p12

Cũng lưu ý key-directiontùy chọn:

--key-direction
Cách khác để chỉ định tham số hướng tùy chọn cho --tls-auth--secrettùy chọn. Hữu ích khi sử dụng tệp nội tuyến (Xem phần trên tệp nội tuyến).


3

Điều này đã được thử nghiệm với OpenVPN 2.3.4 Máy chủ Debian 8.9 với các máy khách Win7.

Bước 1. Tạo một tệp chứa mặc định của bạn (tôi gọi nó là inline_client.conf) tất cả các cài đặt phải khớp với các giá trị server.conf của bạn

client
dev tun
proto udp
remote yourserver.xyz 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 3
;mute 20

ca [inline]
cert [inline]
key [inline]
tls-auth [inline] 1

Bước 2. Tạo tập lệnh sau, điều chỉnh đường dẫn theo yêu cầu và chmod ug+x MakeInline.sh

#!/bin/bash

# Default Variable Declarations

DEFAULT="inline_client.conf"
FILEEXT=".ovpn"
CRT=".crt"
KEY=".key"
CA="ca.crt"
TA="ta.key"
kPath="./keys/"


#Ask for a Client name
echo "Please enter an existing Client Name:"
read NAME

echo "Please enter an Name for the output file"
read ovpnName

#1st Verify that client's Public Key Exists
if [ ! -f $kPath$NAME$CRT ]; then
   echo "[ERROR]: Client Public Key Certificate not found: $kPath$NAME$CRT"
   exit
fi
echo "Client's cert found: $kPath$NAME$CRT"

#Then, verify that there is a private key for that client
if [ ! -f $kPath$NAME$KEY ]; then
   echo "[ERROR]: Client 3des Private Key not found: $kPath$NAME$KEY"
   exit
fi
echo "Client's Private Key found: $kPath$NAME$KEY"

#Confirm the CA public key exists
if [ ! -f $kPath$CA ]; then
   echo "[ERROR]: CA Public Key not found: $kPath$CA"
   exit
fi
echo "CA public Key found: $kPath$CA"

#Confirm the tls-auth ta key file exists
if [ ! -f $kPath$TA ]; then
   echo "[ERROR]: tls-auth Key not found: $kPath$TA"
   exit
fi
echo "tls-auth Private Key found: $kPath$TA"

#Ready to make a new .opvn file - Start by populating with the

cat $DEFAULT > $ovpnName$FILEEXT

#Now, append the CA Public Cert
echo "<ca>" >> $ovpnName$FILEEXT
cat $kPath$CA | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $ovpnName$FILEEXT
echo "</ca>" >> $ovpnName$FILEEXT

#Next append the client Public Cert
echo "<cert>" >> $ovpnName$FILEEXT
cat $kPath$NAME$CRT | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $ovpnName$FILEEXT
echo "</cert>" >> $ovpnName$FILEEXT

#Then, append the client Private Key
echo "<key>" >> $ovpnName$FILEEXT
cat $kPath$NAME$KEY >> $ovpnName$FILEEXT
echo "</key>" >> $ovpnName$FILEEXT

#Finally, append the TA Private Key
echo "<tls-auth>" >> $ovpnName$FILEEXT
cat $kPath$TA >> $ovpnName$FILEEXT
echo "</tls-auth>" >> $ovpnName$FILEEXT

echo "Done! $ovpnName$FILEEXT Successfully Created."

#Script written by Eric Jodoin
#Update by Eric Maasdorp 2017-12-16

Bước 3. Thực thi MakeInline.shnó sẽ hỏi tên của một khách hàng mà bạn cần phải tạo build-key or build-key-pass. Nó sẽ hỏi tên cho tập tin ovpn. Tiêu chuẩn của tôi là ServerToConnectTo.ClientName sẽ sản xuất ServerToConnectTo.ClientName.ovpn

Lưu ý: nếu bạn đã sử dụng build-keythay vì build-key-passsau đó bất kỳ ai bị giữ *.ovpnsẽ có quyền truy cập vào máy chủ của bạn mà không cần mật khẩu!


1

Tập lệnh Python này có thể được chạy trên máy chủ để tạo khóa máy khách và hồ sơ. Tôi đã nội tuyến nó nhưng nó không phải là sáng tạo của tôi và dài và có thể được cập nhật định kỳ, và có các nhánh của nó vì vậy tỷ lệ cược sẽ được tìm kiếm trên web cho khách du lịch trong tương lai. Nếu liên kết không hoạt động, hãy thử tìm kiếm "openvpn_gen.py".

https://gist.github.com/Justasic/908ef5f4fa162f15b3b8

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.