Câu trả lời:
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 SUPPORT
phầ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.
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
và--tls-auth
cá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
--pkcs12
tệ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-direction
tùy chọn:
--key-direction
Cách khác để chỉ định tham số hướng tùy chọn cho--tls-auth
và--secret
tù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).
Đ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.sh
nó 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-key
thay vì build-key-pass
sau đó bất kỳ ai bị giữ *.ovpn
sẽ có quyền truy cập vào máy chủ của bạn mà không cần mật khẩu!
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".
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).