При подготовке конфигурационных файлов wg встаёт вопрос генерации приватного и публичного ключей. Вы можете это сделать с помощью встроенных средств WireGuard или утилит, доступных в каждом популярном дистрибутиве Linux.
Генерация ключей средствами WireGuard
Этот способ удобен в случаях, когда wg уже установлен. Достаточно просто выполнить:
wg genkey | tee private.key | wg pubkey > public.key
*в файле private.key будет сохранён приватный ключ, в public.key - публичный.
Генерация ключей средствами Linux
Если по какой-то причине вам необходимо сгенерировать ключи на машине без установленного WireGuard, этот вариант для вас.
В основе генерации ключей wg лежит алгоритм Curve25519, причем итоговые значения должны быть заданы в кодировке base64 и иметь длину 44 символа.
Чтобы вывод удовлетворял обозначенным выше требованиям, используем команды ниже:
openssl genpkey -algorithm X25519 -outform der | tee /tmp/privatekey.der | tail -c 32 | base64 > private.key
openssl pkey -inform der -in /tmp/privatekey.der -pubout -outform der | tail -c 32 | base64 > public.key
rm /tmp/privatekey.der
*в файле private.key будет сохранён приватный ключ, в public.key - публичный.
Минимальная автоматизация
Чтобы сгенерировать и вывести сразу несколько пар ключей, зададим желаемое количество в переменной $count:
count=5
WireGuard
clear
for ((i=0; i < $count; i++))
do
echo -e "\n====="
privatekey=$(wg genkey)
echo -e "Private key: \t$privatekey"
publickey=$(echo $privatekey | wg pubkey)
echo -e " Public key: \t$publickey"
echo -e "=====\n"
done
Bash
clear
for ((i=0; i < $count; i++))
do
echo -e "\n====="
privatekey=$(openssl genpkey -algorithm X25519 -outform der | tee /tmp/privatekey.der | tail -c 32 | base64)
echo -e "Private key: \t$privatekey"
publickey=$(openssl pkey -inform der -in /tmp/privatekey.der -pubout -outform der | tail -c 32 | base64)
echo -e " Public key: \t$publickey"
echo -e "=====\n"
done
rm /tmp/privatekey.der
Заключение
В статье рассмотрены 2 варианта генерации приватного и публичного ключей для вайргард. Если материал был полезен - поставьте лайк или подпишитесь на канал, чтобы чаще видеть в ленте подобный контент.
Всем добра!)