it-swarm.com.de

Generieren Sie ein OpenVPN-Profil, das der Clientbenutzer importieren kann

Gibt es eine Dokumentation oder Ressource, die beschreibt, wie ein Profil für einen OpenVPN-Client zum Importieren generiert und gehostet wird? Idealerweise möchten meine Benutzer, dass sie keine .Zip-Datei der .ovpn + -Zertifikate separat abrufen, in das richtige Verzeichnis extrahieren, ihre .ovpn-Datei optimieren usw. müssen.

41
Yang

Anscheinend wurde seit OpenVPN 2.1 eine Inline-Konfiguration unterstützt. So können Sie Ihre Zertifikate und Schlüssel in einer einzigen Konfigurationsdatei suchen. Die Dokumentation zum Erstellen dieser Konfigurationsdatei wurde jedoch erst in der letzten Version von 2.3 hinzugefügt.

Siehe die INLINE FILE SUPPORT Abschnitt von die OpenVPN-Manpage für weitere Informationen.

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>

Die Dokumente für die Konfigurationsdatei sind dieselben wie die Dokumente für die Befehlszeilenoptionen:

Mit OpenVPN kann jede Option entweder in der Befehlszeile oder in einer Konfigurationsdatei platziert werden. Obwohl allen Befehlszeilenoptionen ein doppelter Bindestrich ("-") vorangestellt ist, kann dieses Präfix entfernt werden, wenn eine Option in eine Konfigurationsdatei eingefügt wird.

41
Zoredache

Aus dem OpenVPN 2.3 Manpage (Es wird seit 2.1rc-etwas unterstützt):

OpenVPN ermöglicht das Einfügen von Dateien in die Hauptkonfiguration für die Optionen --ca, --cert, --dh, --extra-certs, --key, --pkcs12, --secret Und --tls-auth.

Jede Inline-Datei beginnt mit der Zeile <option> Und endet mit der Zeile </option>.

Hier ist ein Beispiel für eine Inline-Dateiverwendung

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

Bei Verwendung der Inline-Dateifunktion mit --pkcs12 Muss die Inline-Datei base64-codiert sein. Das Codieren einer .p12-Datei in base64 kann beispielsweise mit OpenSSL erfolgen, indem openssl base64 -in input.p12 Ausgeführt wird.

Beachten Sie auch die Option key-direction:

--key-direction
Alternative Möglichkeit, den optionalen Richtungsparameter für die Optionen --tls-auth Und --secret Anzugeben. Nützlich bei der Verwendung von Inline-Dateien (siehe Abschnitt über Inline-Dateien).

8
plaisthos

Dies wurde mit OpenVPN 2.3.4 Debian 8.9 Server mit Win7-Clients getestet.

Schritt 1. Erstellen Sie eine Datei mit Ihren Standardeinstellungen (ich nenne sie inline_client.conf). Alle Einstellungen müssen mit Ihren server.conf-Werten übereinstimmen

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

Schritt 2. Erstellen Sie das folgende Skript, passen Sie die Pfade nach Bedarf an und 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

Schritt 3. Führen Sie MakeInline.sh Aus, um nach dem Namen eines Clients zu fragen, den Sie bereits mit build-key or build-key-pass Erstellt haben müssen. Es wird nach einem Namen für die ovpn-Datei gefragt. Mein Standard ist ServerToConnectTo.ClientName, der ServerToConnectTo.ClientName.ovpn Erzeugt.

Hinweis: Wenn Sie build-key Anstelle von build-key-pass Verwendet haben, hat jeder, der *.ovpn Erhält, ohne Passwort Zugriff auf Ihren Server!

3
Eric Maasdorp

Dieses Python -Skript kann auf dem Server ausgeführt werden, um die Clientschlüssel und ein Profil zu generieren. Ich würde es einbinden, aber es ist nicht meine Erstellung und ist lang und kann regelmäßig aktualisiert werden, und es gibt Wenn der Link nicht funktioniert, versuchen Sie, nach "openvpn_gen.py" zu suchen.

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

1
dragon788