Вопрос или проблема
Я следовал уроку, чтобы настроить свой Raspberry Pi для работы с OpenVPN (я довольно нов в использовании Pi и сетях, и это показалось мне интересным вводным проектом). Однако я столкнулся с проблемой, когда пытался сгенерировать ключи с помощью easy-rsa. Я отредактировал файл vars
, чтобы указать на директорию easy-rsa
, но всякий раз, когда я пытаюсь выполнить файл vars
, я получаю следующее сообщение:
-bash: /etc/openvpn/easy-rsa: Это директория
-bash: /whichopensslcnf: Нет такого файла или директории
ПРИМЕЧАНИЕ: Если вы выполните ./clean-all, я выполню rm -rf на /keys
/etc/openvpn/easy-rsa
– это местоположение директории, поэтому я считаю первую строку несколько избыточной. Также файл /whichopensslcnf
явно находится прямо внутри директории.
Любой совет или подсказки будут очень ценными.
ОБНОВЛЕНИЕ #1
Урок можно найти здесь: https://readwrite.com/2014/04/10/raspberry-pi-vpn-tutorial-server-secure-web-browsing/
source ./vars
– это команда, которая вызывает ошибку.
# настройки параметров easy-rsa
# ПРИМЕЧАНИЕ: Если вы установили из RPM,
# не редактируйте этот файл на месте в
# /usr/share/openvpn/easy-rsa --
# вместо этого вам следует скопировать всю
# директорию easy-rsa в другое место
# (например, /etc/openvpn), чтобы ваши
# изменения не были потеряны при будущем
# обновлении пакета OpenVPN.
# Эта переменная должна указывать на
# верхний уровень дерева easy-rsa.
export EASY_RSA="`/etc/openvpn/easy-rsa`"
#
# Эта переменная должна указывать на
# запрашиваемые исполняемые файлы
#
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
# Эта переменная должна указывать на
# файл openssl.cnf, включенный
# с easy-rsa.
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf`
# Отредактируйте эту переменную, чтобы указать на
# вашу создаваемую директорию ключей.
#
# ПРЕДУПРЕЖДЕНИЕ: clean-all выполнит
# rm -rf в этой директории,
# так что убедитесь, что вы определили
# ее правильно!
export KEY_DIR="$EASY_RSA/keys"
# Выполните предупреждение rm -rf
echo ПРИМЕЧАНИЕ: Если вы выполните ./clean-all, я выполню rm -rf в $KEY_DIR
# Исправления PKCS11
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
# Увеличьте это до 2048, если вы
# параноик. Это замедлит
# производительность TLS-торговли
# а также процесс генерации одноразовых параметров DH.
export KEY_SIZE=2048
# На сколько дней должен истекать корневой ключ CA?
export CA_EXPIRE=3650
# На сколько дней должны истекать сертификаты?
export KEY_EXPIRE=3650
# Это значения по умолчанию для полей,
# которые будут размещены в сертификате.
# Не оставляйте ни одно из этих полей пустым.
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
# Поле X509 Subject
export KEY_NAME="EasyRSA"
# Смарт-карта PKCS11
# export PKCS11_MODULE_PATH="/usr/lib/changeme.so"
# export PKCS11_PIN=1234
# Если вы хотите подписать все ключи с одним и тем же Общим именем, раскомментируйте
KEY_C$
# Вам также нужно будет убедиться, что конфигурация вашего сервера OpenVPN содержит
duplicate-$
# export KEY_CN="CommonName"
Строка 14 – это единственное, что я изменил.
Обновление #2
Благодаря sim, я смог перейти через эту исходную проблему, но теперь, когда я пытаюсь выполнить команду ./clean-all
, меня просят выполнить файл vars
, хотя я уже это сделал.
pi@cympi:/etc/openvpn/easy-rsa $ source ./vars
ПРИМЕЧАНИЕ: Если вы выполните ./clean-all, я выполню rm -rf в /etc/openvpn/easy-
rsa/keys
pi@cympi:/etc/openvpn/easy-rsa $ sudo ./clean-all
Пожалуйста, сначала выполните скрипт vars (т.е. "source ./vars")
Убедитесь, что вы отредактировали его в соответствии с вашей конфигурацией.
Я несколько раз возвращался назад и вперед, но не могу перейти через этот пункт.
Эта строка пытается выполнить следующее:
export EASY_RSA="`/etc/openvpn/easy-rsa`"
Обратите внимание на обратные кавычки вокруг /etc/openvpn/easy-rsa
. Они попытаются выполнить это как команду. Смотрим на руководство, эта строка показана так:
export EASY_RSA=”/etc/openvpn/easy-rsa”
Ответ или решение
Проблема, с которой вы столкнулись при попытке сгенерировать ключи для OpenVPN с использованием Easy-RSA, в основном связана с неправильной настройкой переменной окружения EASY_RSA
и вызовом файла vars
. Давайте рассмотрим ключевые моменты и шаги, которые помогут вам устранить эти проблемы и успешно создать необходимые ключи.
Анализ проблемы
1. Ошибка в определении переменной EASY_RSA
В вашем конфигурационном файле vars
имеется строка:
export EASY_RSA="`/etc/openvpn/easy-rsa`"
Здесь вы пытаетесь выполнить команду, которая ссылается на директорию /etc/openvpn/easy-rsa
, и это приводит к ошибке, так как систему не удается интерпретировать эту директиву как команду. Вместо этого нужно указать путь к директории как строку, а не как команду. Правильная строка должна выглядеть следующим образом:
export EASY_RSA="/etc/openvpn/easy-rsa"
2. Путь к файлу openssl.cnf
Далее, чтобы исправить проблему с определением переменной KEY_CONFIG
, которая зависит от переменной EASY_RSA
, убедитесь, что строка:
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf`
изменена на:
export KEY_CONFIG="$EASY_RSA/whichopensslcnf"
Это необходимо для правильной интерпретации пути к файлу openssl.cnf
.
Шаги по исправлению
-
Откройте файл
vars
:
Отредактируйте файл, в котором вы настроили переменные окружения. Для этого можно использовать любой текстовый редактор, например,nano
:sudo nano /etc/openvpn/easy-rsa/vars
-
Измените определения переменных:
Убедитесь, что строки задаются корректно и выглядят следующим образом:export EASY_RSA="/etc/openvpn/easy-rsa" export KEY_CONFIG="$EASY_RSA/whichopensslcnf"
-
Сохраните изменения и выйдите из редактора.
-
Запустите
source
для обновления переменных:source ./vars
-
Теперь выполните
clean-all
:sudo ./clean-all
Если все корректно настроено, предыдущие ошибки больше не должны появляться.
Заключение
Следуя указанным шагам и внимательно обращая внимание на правильное определение переменных в файле vars
, вы сможете устранить проблемы, связанные с генерацией ключей для OpenVPN. Убедитесь, что вы затрагиваете только те строки, которые необходимо исправить, и всегда проверяйте документацию на наличие возможных обновлений или изменений. Если возникнут дополнительные вопросы или трудности, не стесняйтесь задавать их, так как сообщество всегда готово помочь новеньким в вопросах настройки и администрирования системы.