Lösung 1:
versuchen Sie es mit --batch Flagge
./build-key --batch client1
Lösung 2:
Wenn Sie sich die Quelle von build-key
ansehen , werden Sie feststellen, dass es pkitool
aufruft . Ich habe einen Wrapper geschrieben, um die Schlüssel des Clients und die entsprechenden OpenVPN-Konfigurationsdateien in einem Tarball zu bündeln, den ich dann meinen Benutzern geben kann:
#!/bin/bash
client=$1
if [ x$client = x ]; then
echo "Usage: $0 clientname"
exit 1
fi
if [ ! -e keys/$client.key ]; then
echo "Generating keys..."
. vars
./pkitool $client
echo "...keys generated."
fi
tarball=./keys/$client.tgz
if [ ! -e $tarball ]; then
echo "Creating tarball..."
tmpdir=/tmp/client-tar.$$
mkdir $tmpdir
cp company.ovpn $tmpdir/company.ovpn
cp keys/ca.crt $tmpdir
cp keys/$client.key $tmpdir/client.key
cp keys/$client.crt $tmpdir/client.crt
tar -C $tmpdir -czvf $tarball .
rm -rf $tmpdir
echo "...tarball created"
else
echo "Nothing to do, so nothing done. (keys/$client.tgz already exists)"
fi
Lösung 3:
Die neue Version von EasyRSA kommt jetzt als einzelne Binärdatei. Um das Erstellen eines Clientschlüssels zu automatisieren, können Sie jetzt die Datei „vars“ verwenden (legen Sie sie einfach in dasselbe Verzeichnis wie die easyrsa-Binärdatei):
if [ -z "$EASYRSA_CALLER" ]; then
echo "You appear to be sourcing an Easy-RSA 'vars' file." >&2
echo "This is no longer necessary and is disallowed. See the section called" >&2
echo "'How to use this file' near the top comments for more details." >&2
return 1
fi
set_var EASYRSA "$PWD"
set_var EASYRSA_OPENSSL "openssl"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "org"
set_var EASYRSA_REQ_COUNTRY "Country"
set_var EASYRSA_REQ_PROVINCE "Province"
set_var EASYRSA_REQ_CITY "City"
set_var EASYRSA_REQ_ORG "Org Ltd"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Infrastructure"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 365
set_var EASYRSA_CRL_DAYS 180
set_var EASYRSA_TEMP_FILE "$EASYRSA_PKI/extensions.temp"
und verwenden Sie die Binärdatei von EasyRSA:
./easyrsa build-client-full client1 nopass
Lösung 4:
Das, was mir am schnellsten einfällt, ist expect
; Es ermöglicht Ihnen, diese Art von Befehlszeileninteraktionen zu automatisieren.
Lösung 5:
Ich hatte das gleiche Problem.
Die Lösung, die ich gefunden habe, war:
echo -en "\n\n\n\n\n\n\n\ny\ny\n" | ./build-key client1