İstemci kullanıcısının içe aktarması için bir OpenVPN profili oluşturun


40

OpenVPN istemcisinin içe aktarması için profil oluşturmayı ve barındırmayı açıklayan herhangi bir belge veya kaynak var mı? İdeal olarak, kullanıcılarımın .ovpn + certs dosyasının bir .zip dosyasını ayrı ayrı almak zorunda kalmamasını, uygun dizine çıkarmasını, .ovpn'lerini ince ayar yapmasını vb.

Yanıtlar:


40

Görünüşe göre OpenVPN 2.1'den beri bir satır içi yapılandırma desteklendi. Tek bir yapılandırma dosyasında cerlerinizi ve anahtarlarınızı bulmanızı sağlar. Ancak bu yapılandırma dosyasının nasıl oluşturulacağına ilişkin belgeler 2.3'ün son sürümüne kadar eklenmedi.

Daha fazla bilgi için OpenVPN man sayfasınınINLINE FILE SUPPORT bölümüne bakın .

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>

Config dosyasının dokümanları komut satırı seçeneklerinin dokümanlarıyla aynıdır:

OpenVPN, herhangi bir seçeneğin komut satırına veya bir yapılandırma dosyasına yerleştirilmesine izin verir. Tüm komut satırı seçeneklerinden önce bir çift satırlı çizgi ("-") gelse de, bir seçenek bir yapılandırma dosyasına yerleştirildiğinde bu önek kaldırılabilir.


Windows Connect İstemcisi ile çalışamadı ( openvpn.net/?option=com_content&id=357 ), Could not read file C:\\...\[inline]istemcinin satır içi sertifikaları (henüz) bilmediği anlaşılıyor.
Patrick Oscity

İşe yarayıp yaramadığını bilmiyorum ama sadece ca, cert, key ve tls-auth config değerlerini bıraktım ve işe yarıyor.
Ikke

2
Satırları [satır içi] ile kaldırmalısınız. Tls-auth [inline] 1 yerine tls-yönünü kullanmalısınız 1
plaisthos 30:13

2
Üzgünüm, anahtar yön 1'dir. Adam sayfasına yaptığım yama zaten entegre edildi. INLINE FILES altındaki 2.3 man sayfasına bakın: community.openvpn.net/openvpn/wiki/Openvpn23ManPage . Okunabilir ve erişilebilir olmasını sağlamak için kendi cevabına kopyaladım.
plaisthos

1
@Strubbl: bu bağlantının 10. ve 11. Adımlarına bakınız digitalocean.com/community/tutorials/…
Sai Ramachandran

8

OpenVPN 2.3 man sayfasından (2.1rc-den beri desteklenmektedir):

OpenVPN --ca, --cert, --dh, --extra-certs, --key, --pkcs12, --secretve --tls-authseçenekleri için ana yapılandırmadaki dosyaların dahil edilmesine izin verir .

Her satır içi dosya satır tarafından başlatıldı ve satırın <option>sonuna geldi </option>.

İşte satır içi dosya kullanımına bir örnek

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

Satır içi dosya özelliğini kullanırken satır içi dosya ile --pkcs12base64 kodlanmış olması gerekir. Bir .p12 dosyasının base64'e kodlanması örneğin OpenSSL ile çalıştırılarak yapılabiliropenssl base64 -in input.p12

Ayrıca key-directionseçeneğe dikkat edin:

--key-direction
--tls-auth Ve --secretseçenekleri için isteğe bağlı yön parametresini belirtmenin alternatif yolu . Satır içi dosyaları kullanırken kullanışlıdır (Satır içi dosyalarındaki bölüme bakınız).


3

Bu Win7 istemcileri ile OpenVPN 2.3.4 Debian 8.9 Server ile test edilmiştir.

Adım 1. Varsayılanlarınızı içeren bir dosya oluşturun (buna inline_client.conf diyorum) tüm ayarların server.conf değerlerinizle eşleşmesi gerekir

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

Adım 2. Aşağıdaki betiği oluşturun, yolları gerektiği gibi ayarlayın ve 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

Adım 3. Çalıştırın MakeInline.sh, daha önce yaratmış olduğunuz müşterinin adını sorar build-key or build-key-pass. Ovpn dosyası için bir ad isteyecektir. Standart benim üretecek ServerToConnectTo.ClientName ServerToConnectTo.ClientName.ovpn

Not: build-keyBunun yerine kullandıysanız build-key-pass, alıcı *.ovpnkişiyi parolanız olmadan sunucunuza erişebilir!


1

Bu Python betiği, istemci anahtarlarını ve bir profili oluşturmak için sunucuda çalıştırılabilir. Ben satır içi olurdu ama benim yaratım değil ve uzun ve periyodik olarak güncellenebilir ve bunun için çatallar vardır, bu yüzden olasılıkla gelecekteki web gezginleri için web'de aranabilir olacaktır. Bağlantı işe yaramazsa, "openvpn_gen.py" ifadesini aramayı deneyin.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.