Onion-Location este o modalitate ușoară de a face publicitate unui site onion pentru utilizatori. Puteți fie să configurați un server web să afișeze un antet Onion-Location sau să adăugați un atribut HTML <meta> pe site.

Pentru ca antetul să fie valid, trebuie îndeplinite următoarele condiții:

  • Valoarea Onion-Location trebuie să fie un URL valid cu http: Sau https: protocol și un nume de gazdă .onion.
  • Pagina web care definește antetul Onion-Location trebuie să fie servită prin HTTPS.
  • Pagina web care definește antetul de Onion-Location nu trebuie să fie un site Onion.

Pe această pagină, comenzile de gestionare a serverului web se bazează pe sisteme de operare Debian și pot diferi de alte sisteme. Verificați serverul web și documentația sistemului de operare.

Apache

Pentru a configura acest antet în Apache 2.2 sau mai nou, va trebui să activați modulele header și rewrite și să editați fișierul Virtual Host al site-ului.

Pasul 1. Activați antetele și rescrieți modulele și reîncărcați Apache2

 $ sudo a2enmod headers rewrite

 $ sudo systemctl reload apache2

Dacă primiți un mesaj de eroare, ceva a mers prost și nu puteți continua până când nu v-ați dat seama de ce acest lucru nu a funcționat.

Pasul 2. Adăugați antetul Onion-Location în fișierul de configurare Virtual Host

Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"

Unde your-onion-address.onion este adresa Onion Service pe care doriți să o redirecționați și {REQUEST_URI} este componenta cale a URI-ului solicitat, cum ar fi „/index.html”.

Exemplu de gazdă virtuală:

     <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>

Pasul 3. Repornește Apache

Reîncărcați serviciul apache2, astfel încât modificările configurației să intre în vigoare:

 $ sudo systemctl reload apache2 

Dacă primiți un mesaj de eroare, ceva a mers prost și nu puteți continua până când nu v-ați dat seama de ce acest lucru nu a funcționat.

Pasul 4. Testarea Onion-Location-ului dumnevoastră

Pentru a testa dacă Onion-Location funcționează, aduceți anteturile HTTP ale site-ului, de exemplu:

 $ wget --server-response --spider your-website.tld

Căutați intrarea onion-location și adresa de service Onion. Sau deschideți site-ul în Tor Browser și o pastilă purpurie va apărea în bara de adrese.

Nginx

Pentru a configura un antet Onion-Location, operatorul de servicii trebuie să configureze mai întâi un serviciu Onion.

Pasul 1. Creați un serviciu onion prin setarea următoarelor în torrc:

HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock

Pasul 2. Editați fișierul de configurare a site-ului

În /etc/nginx/conf.d/<your-website>.conf adăugați antetul Onion-Location și adresa Onion Service. De exemplu:

    add_header Onion-Location http://<your-onion-address>.onion$request_uri;

Fișierul de configurare cu Onion-Location trebuie să arate astfel:

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;
}

Pasul 3. Testați configurația site-ului web

 $ sudo nginx -t

Serverul web trebuie să confirme că noua sintaxă funcționează:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Pasul 4. Reporniți nginx

 $ sudo nginx -s reload

Dacă primiți un mesaj de eroare, ceva a mers prost și nu puteți continua până când nu v-ați dat seama de ce acest lucru nu a funcționat.

Pasul 5. Testarea Onion-Location-ului dumnevoastră

Pentru a testa dacă Onion-Location funcționează, aduceți anteturile HTTP ale site-ului, de exemplu:

 $ wget --server-response --spider your-website.tld

Căutați intrarea onion-location și adresa de service Onion. Sau deschideți site-ul în Tor Browser și o pastilă purpurie va apărea în bara de adrese.

Caddy

Caddy dispune de HTTPS automat în mod implicit, astfel încât vă oferă certificat de tip TLS și are grijă de redirecționarea HTTP-to-HTTPS pentru dumneavoastră. Dacă utilizați Caddy 2, pentru a include un antet Onion-Location, adăugați următoarea declarație în fișierul dvs. Caddyfile:

header Onion-Location http://<your-onion-address>.onion{path}

Dacă rulați un site static și aveți adresa onion într-o variabilă de mediu $TOR_HOSTNAME, fișierul dumneavoastră Caddyfile va arăta astfel:

your-website.tld

header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server

Testarea: Testați-l cu:

 $ wget --server-response --spider your-website.tld

Căutați intrarea onion-location și adresa de service Onion. Sau, deschideți site-ul web în Tor Browser și o pastilă violet va apărea în bara de adrese.

Folosind un atribut HTML <meta>

Comportamentul identic al Onion-Location include opțiunea de a-l defini ca atribut HTML <meta> http-equiv. This may be used by websites that prefer (or need) to define an Onion-Location by modifying the served HTML content instead of adding a new HTTP header. Antetul Onion-Location ar fi echivalent cu un <meta http-equiv="onion-location" content="http://<your-onion-service-address>.onion" /> adăugat în elementul HTML head al paginii web. Înlocuiți <your-onion-service-address.onion> cu Onion Service pe care doriți să-l redirecționați .

Limitări

HTML nu poate citi adresa URL solicitată și nu o poate introduce dinamic în eticheta http-equiv <meta>. Din acest motiv, vizitatorii sunt întotdeauna redirecționați către URL-ul .onion specificat în partea de conținut a meta tag-ului, indiferent de subpagina pe care sunt.

Prin urmare, dacă este posibil, vă recomandăm să utilizați una dintre metodele de mai sus.

Informații suplimentare

Citiți Onion-Location spec.