Onion-Location - це простий спосіб рекламувати сайт onion для користувачів.
Ви можете або налаштувати веб-сервер, щоб показувати заголовок Onion-Location, або додати на веб-сайт атрибут HTML <meta>.
Щоб заголовок був дійсним, необхідно виконати такі умови:
- Значення Onion-Location має бути дійсною URL-адресою з протоколом http: або https: і ім’ям хоста .onion.
- Веб-сторінка, що визначає заголовок Onion-Location, має обслуговуватися через HTTPS.
- Веб-сторінка, що вибирає заголовок Onion-Location, має обслуговуватися через HTTPS.
На цій сторінці команди для керування веб-сервером базуються на операційних системах, подібних до Debian, і можуть відрізнятися від інших систем.
Перевірте документацію веб-сервера та операційної системи.
Apache
Щоб налаштувати цей заголовок в Apache 2.2 або вище, вам потрібно буде ввімкнути модулі headers і rewrite і відредагувати файл віртуального хосту веб-сайту.
Крок 1. Увімкніть заголовки та перепишіть модулі та перезавантажте Apache2
$ sudo a2enmod headers rewrite
$ sudo systemctl reload apache2
Якщо ви отримуєте повідомлення про помилку, щось пішло не так, і ви не можете продовжити, поки не зрозумієте, чому це не спрацювало.
Крок 2. Додайте заголовок Onion-Location до файлу конфігурації віртуального хосту
Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"
Де your-onion-address.onion — це адреса служби Onion, яку ви хочете переспрямувати, а {REQUEST_URI} — це компонент шляху запитаного URI, наприклад "/index.html".
Приклад віртуального хосту:
<VirtualHost *:443>
ServerName <your-website.tld>
DocumentRoot /path/to/htdocs
Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"
SSLEngine on
SSLCertificateFile "/path/to/www.example.com.cert"
SSLCertificateKeyFile "/path/to/www.example.com.key"
</VirtualHost>
Крок 3. Перезавантажте Apache
Перезавантажте службу apache2, щоб зміни конфігурації набули чинності:
$ sudo systemctl reload apache2
Якщо ви отримуєте повідомлення про помилку, щось пішло не так, і ви не можете продовжити, поки не зрозумієте, чому це не спрацювало.
Крок 4. Перевірка вашого Onion-Location
Щоб перевірити, чи працює Onion-Location, отримайте HTTP-заголовки веб-сайту, наприклад:
$ wget --server-response --spider your-website.tld
Знайдіть запис onion-location і адресу Onion Service.
Або відкрийте веб-сайт у браузері Tor, і в адресному рядку з’явиться фіолетова таблетка.
Nginx
Щоб налаштувати заголовок Onion-Location, оператор служби повинен спочатку налаштувати службу Onion.
Крок 1. Створіть службу Onion, встановивши таке в torrc:
HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock
Крок 2. Відредагуйте файл конфігурації веб-сайту
У /etc/nginx/conf.d/<your-website>.conf додайте заголовок Onion-Location і адресу Onion Service.
Приклад:
add_header Onion-Location http://<your-onion-address>.onion$request_uri;
Файл конфігурації з Onion-Location має виглядати так:
server {
listen 80;
listen [::]:80;
server_name <your-website.tld>;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <your-website.tld>;
# managed by Certbot - https://certbot.eff.org/
ssl_certificate /etc/letsencrypt/live/<hostname>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<hostname>/privkey.pem;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Onion-Location http://<your-onion-address>.onion$request_uri;
# managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
access_log /var/log/nginx/<hostname>-access.log;
index index.html;
root /path/to/htdocs;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen unix:/var/run/tor-hs-my-website.sock;
server_name <your-onion-address>.onion;
access_log /var/log/nginx/hs-my-website.log;
index index.html;
root /path/to/htdocs;
}
Крок 3. Перевірте конфігурацію веб-сайту
$ sudo nginx -t
Веб-сервер повинен підтвердити, що новий синтаксис працює:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Крок 4. Перезапустіть nginx
$ sudo nginx -s reload
Якщо ви отримуєте повідомлення про помилку, щось пішло не так, і ви не можете продовжити, поки не зрозумієте, чому це не спрацювало.
Крок 5. Перевірка вашого Onion-Location
Щоб перевірити, чи працює Onion-Location, отримайте HTTP-заголовки веб-сайту, наприклад:
$ wget --server-response --spider your-website.tld
Знайдіть запис onion-location і адресу Onion Service.
Або відкрийте веб-сайт у браузері Tor, і в адресному рядку з’явиться фіолетова таблетка.
Caddy
Caddy за замовчуванням підтримує автоматичний HTTPS, тому він надає ваш сертифікат TLS і піклується про переспрямування HTTP на HTTPS.
Якщо ви використовуєте Caddy 2, щоб включити заголовок Onion-Location, додайте таке оголошення у свій Caddyfile:
header Onion-Location http://<your-onion-address>.onion{path}
Якщо ви використовуєте статичний сайт і маєте адресу onion у змінній середовища $TOR_HOSTNAME, ваш Caddyfile виглядатиме так:
your-website.tld
header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server
Тестування: Перевірте за допомогою:
$ wget --server-response --spider your-website.tld
Знайдіть запис onion-location і адресу Onion Service.
Або відкрийте веб-сайт у браузері Tor, та в адресному рядку з’явиться фіолетова таблетка.
Використання атрибута HTML <meta>
Ідентична поведінка Onion-Location включає можливість визначення його як атрибута http-equiv HTML <meta>.
Це може використовуватися веб-сайтами, які надають перевагу (або потребу) визначати Onion-Location шляхом зміни наданого HTML-вмісту замість додавання нового заголовка HTTP.
Заголовок Onion-Location буде еквівалентним <meta http-equiv="onion-location" content="http://<your-onion-service-address>.onion" />, доданому в елемент HTML head веб-сторінки. Замініть <your-onion-service-address.onion> на Onion Service, який ви хочете перенаправити.
Обмеження
HTML не може прочитати запитану URL-адресу та динамічно вставити її в тег http-equiv <meta>.
З цієї причини відвідувачі завжди перенаправляються на URL-адресу .onion, указану в частині вмісту мета-тегу, незалежно від того, на якій підсторінці вони знаходяться.
Тому, якщо є можливість, рекомендуємо скористатися одним із наведених вище способів.
Докладніші відомості
Прочитайте специфікацію Onion-Location.