Solución 1:
prueba --batch bandera
./build-key --batch client1
Solución 2:
Si miras la fuente de build-key
, encontrará que está llamando a pkitool
. Escribí un contenedor para agrupar las claves del cliente y los archivos de configuración de openvpn apropiados en un tarball que luego podría dar a mis usuarios:
#!/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
Solución 3:
La nueva versión de EasyRSA viene como un solo binario en este momento. Para automatizar la creación de una clave de cliente, ahora puede usar el archivo "vars" (simplemente colóquelo en el mismo directorio que easyrsa binary):
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"
y usa el binario de EasyRSA:
./easyrsa build-client-full client1 nopass
Solución 4:
Lo que me viene a la mente más rápido es expect
; le permite automatizar este tipo de interacciones de línea de comandos.
Solución 5:
Tuve el mismo problema.
La solución que encontré fue:
echo -en "\n\n\n\n\n\n\n\ny\ny\n" | ./construir clave cliente1