解決策 1:
--バッチを試してください フラグ
./build-key --batch client1
解決策 2:
build-key
のソースを見ると 、 pkitool
を呼び出していることがわかります . cilent のキーと適切な openvpn 構成ファイルを tarball にまとめて、ユーザーに提供できるラッパーを作成しました。
#!/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
解決策 3:
EasyRSA の新しいバージョンは現在、単一のバイナリとして提供されています。クライアントキーの構築を自動化するために、「vars」ファイルを使用できるようになりました (easyrsa バイナリと同じディレクトリに配置するだけです):
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"
EasyRSA のバイナリを使用します:
./easyrsa build-client-full client1 nopass
解決策 4:
一番早く思いつくのは expect
です;この種のコマンド ライン操作を自動化できます。
解決策 5:
私も同じ問題を抱えていました。
私が見つけた解決策は次のとおりです:
echo -en "\n\n\n\n\n\n\n\ny\ny\n" | ./build-key client1