Onion-Location ist eine einfache Möglichkeit, eine Onion-Seite bei den Benutzern bekannt zu machen.
Du kannst entweder einen Webserver so konfigurieren, dass er eine Onion-Location-HTTP-Kopfzeile mitgibt, oder ein HTML-<meta>
-Attribut in der Webseite hinzufügen.
Damit der Header gültig ist, müssen die folgenden Bedingungen erfüllt sein:
- Der Onion-Location-Wert muss eine gültige URL mit „http:“- oder „https:“-Protokoll und einem .onion-Hostnamen sein.
- Die Webseite, die den Onion-Location-Header definiert, muss über HTTPS bereitgestellt werden.
- Die Webseite, die den Onion-Location-Header definiert, darf keine Onion-Seite sein.
Die Befehle auf dieser Seite zur Verwaltung des Web-Servers basieren auf Debian-ähnlichen Betriebssystemen und können von anderen Systemen abweichen.
Prüf die Dokumentation deines Webservers und deines Betriebssystems.
Apache
Um diese Kopfzeilen in Apache 2.2 oder höher zu konfigurieren, musst du die Module headers
und rewrite
aktivieren und die Virtual-Host-Datei der Website bearbeiten.
Schritt 1. Aktiviere Kopfzeilen, Rewrite der Module, dann neu laden von Apache2
$ sudo a2enmod headers rewrite
$ sudo systemctl reload apache2
Wenn du eine Fehlermeldung erhältst, ist etwas schiefgelaufen und du kannst nicht fortfahren, bis du herausgefunden hast, warum es nicht funktioniert hat.
Schritt 2. Füge die Onion-Location-Kopfzeilen zur Konfigurationsdatei deines virtuellen Hosts hinzu
Header set Onion-Location "http://your-onion-address.onion%{REQUEST_URI}s"
wobei deine-Onion-Adresse.onion
die Adresse des Onion-Dienstes, den du umleiten möchtest, und {REQUEST_URI}
die Pfadkomponente des angeforderten URI ist, z.B. „/index.html“.
Virtual-Host-Beispiel:
<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>
Schritt 3. Lade Apache neu
Lade den Apache2-Dienst neu, damit deine Konfigurationsänderungen wirksam werden:
$ sudo systemctl reload apache2
Wenn du eine Fehlermeldung erhältst, ist etwas schiefgelaufen und du kannst nicht fortfahren, bis du herausgefunden hast, warum es nicht funktioniert hat.
Schritt 4. Teste deine Onion-Location
Um zu testen, ob Onion-Location funktioniert, rufe z. B. die HTTP-Header der Website ab:
$ wget --server-response --spider your-website.tld
Suche den Eintrag onion-location
und die Adresse des Onion-Dienstes.
Oder öffne die Website im Tor-Browser, und eine lila Pille erscheint in der Adressleiste.
Nginx
Um Onion-Location-Kopfzeilen zu konfigurieren, sollte der Dienstbetreiber zunächst einen Onion-Dienst konfigurieren.
Schritt 1. Erstelle einen Onion-Dienst, indem du Folgendes in torrc
einstellst:
HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock
Schritt 2. Website-Konfigurationsdatei bearbeiten
Füge in /etc/nginx/conf.d/<your-website>.conf
die Onion-Location-Kopfzeilen und die Adresse des Onion-Dienstes hinzu.
Zum Beispiel:
add_header Onion-Location http://<your-onion-address>.onion$request_uri;
Die Konfigurationsdatei mit der Onion-Location sollte wie folgt aussehen:
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;
}
Schritt 3. Teste Website-Konfiguration
$ sudo nginx -t
Der Webserver sollte bestätigen, dass die neue Syntax funktioniert:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Schritt 4. Neustart von nginx
$ sudo nginx -s reload
Wenn du eine Fehlermeldung erhältst, ist etwas schiefgelaufen und du kannst nicht fortfahren, bis du herausgefunden hast, warum es nicht funktioniert hat.
Schritt 5. Test deiner Onion-Location
Um zu testen, ob Onion-Location funktioniert, rufe z. B. die HTTP-Header der Website ab:
$ wget --server-response --spider your-website.tld
Suche den Eintrag onion-location
und die Adresse des Onion-Dienstes.
Oder öffne die Website im Tor-Browser, und eine lila Pille erscheint in der Adressleiste.
Caddy
Caddy bietet standardmäßig automatisches HTTPS, d.h. es stellt dein TLS-Zertifikat bereit und kümmert sich um die HTTP-zu-HTTPS-Umleitung für dich.
Wenn du Caddy 2 verwendest, um Onion-Location-Kopfzeilen einzubinden, füge die folgende Deklaration in deine Caddy-Datei ein:
header Onion-Location http://<your-onion-address>.onion{path}
Wenn du eine statische Seite betreibst und die Onion-Adresse in einer $TOR_HOSTNAME
-Umgebungsvariablen hast, wird deine Caddy-Datei wie folgt aussehen:
your-website.tld
header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server
Austesten: Teste es aus mit:
$ wget --server-response --spider your-website.tld
Suche den Eintrag onion-location
und die Adresse des Onion-Dienstes.
Oder öffne die Webseite im Tor-Browser, und eine lila Pille erscheint in der Adressleiste.
Verwendung eines HTML-<meta>
-Attributs
Das identische Verhalten von Onion-Location beinhaltet die Möglichkeit, es als HTML-<meta>
-http-equiv-Attribut zu definieren.
Dies kann von Webseiten verwendet werden, die es vorziehen (oder benötigen), eine Onion-Location zu definieren, indem sie den bereitgestellten HTML-Inhalt modifizieren, anstatt neue HTTP-Kopfzeilen hinzuzufügen.
Die Onion-Location-Kopfzeilen wären gleichbedeutend mit <meta http-equiv="onion-location" content="http://<your-onion-service-address>.onion" />
, die im HTML-Head-Element der Webseite hinzugefügt werden. Ersetze <your-onion-service-address.onion>
durch den Onion-Dienst, den du umleiten möchtest.
Einschränkungen
HTML kann die angeforderte URL nicht lesen und dynamisch in den http-equiv-<meta>
-Tag einfügen.
Aus diesem Grund werden Nutzer immer auf die im Content-Teil des Meta-Tags angegebene .onion-URL umgeleitet, unabhängig davon, auf welcher Unterseite sie sich befinden.
Deshalb, falls möglich, empfehlen wir eine der oberen Methoden zu verwenden.
Mehr Informationen
Lies die Onion-Location-Spezifikation.