Авторизация клиента — это способ сделать Onion-ресурс приватным и аутентифицированным. Он требует, чтобы клиенты Tor предоставляли учетные данные для аутентификации для подключения к Onion-ресурсу. Для Onion-ресурсов v3 этот метод работает с парой ключей (публичный и закрытый). На стороне ресурса сконфигурирован открытый ключ, и клиент может получить доступ к ресурсу только при наличии закрытого ключа.

Примечание: С момента, как вы настроили авторизацию клиента, никто не сможет получить к ресурсу доступ без закрытого ключа. Если авторизация не настроена, onion-ресурс доступен всем по onion-адресу.

Настройка Onion-ресурса v3

На стороне ресурса

Для настройки авторизации клиента на стороне ресурса должен существовать каталог <HiddenServiceDir>/authorized_clients/. Данный каталог создаётся автоматически в случае следования инструкциям, описанным в разделе Настроить свой Onion-ресурс. Авторизация клиента будет включена для ресурса только в том случае, если tor успешно загрузит хотя бы один файл авторизации.

Далее необходимо создать ключи самостоятельно с помощью скрипта (например, этого, написанного на Bash, Rust или Python) или вручную.

Чтобы вручную сгенерировать ключи, вам нужно установить openssl версии 1.1+ and basez.

Шаг 1. Сгенерируйте ключ с помощью алгоритма x25519:

 $ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem

Если вы получили сообщение об ошибке – что-то пошло не так, и вы не сможете продолжить, пока не выясните, почему это не сработало.

Шаг 2. Отформатируйте ключи в base32:

Закрытый ключ

$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key

Открытый ключ

$ openssl pkey -in /tmp/k1.prv.pem -pubout | grep -v " PUBLIC KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.pub.key

Шаг 3. Скопируйте открытый ключ:

 $ cat /tmp/k1.pub.key

Шаг 4. Создайте файл авторизованного клиента:

Отформатируйте аутентификацию клиента и создайте новый файл в каталоге <HiddenServiceDir>/authorized_clients/. Каждый файл в этом каталоге должен иметь расширение (suffix) ".auth" (т.е. "alice.auth"; имя файла не имеет значения), а формат его содержимого должен быть следующим:

 <auth-type>:<key-type>:<base32-encoded-public-key>

Поддерживаемые значения для <auth-type>: "descriptor".

Поддерживаемые значения для <key-type>: "x25519".

<base32-encoded-public-key> является представлением base32 только необработанных байт ключей (32 байта для x25519).

Например, файл /var/lib/tor/hidden_service/authorized_clients/alice.auth должен выглядеть следующим образом:

 descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ

Каждый файл авторизации должен содержать одну строку (для каждого клиента с аутентификацией необходим отдельный файл). Любой искаженный файл будет проигнорирован.

Шаг 5. Перезапустите ресурс tor:

 $ sudo systemctl reload tor

Если вы получили сообщение об ошибке – что-то пошло не так, и вы не сможете продолжить, пока не выясните, почему это не сработало.

Важно: Отозвать авторизацию клиента можно, удалив его файл ".auth" и выполнив последующий перезапуск процесса tor.

На стороне клиента

Чтобы получить доступ к Onion-ресурсу v3 с авторизацией клиента в качестве пользователя, убедитесь, что в вашем torrc задан параметр ClientOnionAuthDir. Например, добавьте эту строку в /etc/tor/torrc:

 ClientOnionAuthDir /var/lib/tor/onion_auth

Затем в каталоге <ClientOnionAuthDir>, создайте файл с расширением .auth_private для соответствующего этому ключу Onion-ресурса (т.е. 'bob_onion.auth_private'). Содержимое файла <ClientOnionAuthDir>/<user>.auth_private должно выглядеть следующим образом:

 <56-символьный-onion-адрес-без-части-.onion>:descriptor:x25519:<x25519 private key in base32>

Например:

 rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ

Если вы вручную сгенерировали пару ключей, следуя инструкциям на этой странице, вы можете скопировать и использовать закрытый ключ, созданный в Шаге 2. Затем перезапустите tor, и вы сможете подключиться к адресу Onion-ресурса.

Если вы генерируете закрытый ключ для onion-сайта, пользователю не обязательно редактировать torrc Tor Browser. Можно ввести закрытый ключ непосредственно в интерфейсе Tor Browser.

Дополнительные сведения об аутентификации клиента см. в Tor manual.