« Onion-Location » permet d’annoncer facilement un site onion aux utilisateurs.
Vous pouvez soit configurer un serveur Web pour afficher un en-tête Onion-Location, soit ajouter un attribut HTML <meta>
au site Web.
Pour que l'en-tête soit valide, les conditions suivantes doivent être remplies :
- La valeur Onion-Location doit être une URL valide avec le protocole http: ou https: et un nom d'hôte .onion.
- La page Web qui définit l’en-tête d’Onion-Location doit être servie par HTTPS.
- La page Web qui définit l’en-tête d’Onion-Location ne doit pas être un site onion.
Sur cette page, les commandes pour gérer le serveur web sont basées sur des systèmes d'exploitation de type Debian et peuvent différer d'un système à l'autre.
Consultez la documentation de votre serveur web et de votre système d'exploitation.
Apache
Pour configurer cet en-tête dans Apache 2.2 ou supérieur, vous devrez activer les modules headers
et rewrite
et modifier le fichier Virtual Host du site Web.
Étape 1. Activer les en-têtes et les modules de réécriture et recharger Apache2
$ sudo a2enmod headers rewrite
$ sudo systemctl reload apache2
Si vous obtenez un message d’erreur, quelque chose s’est mal passé et vous ne pouvez pas continuer avant de trouver ce qui ne fonctionne pas.
Étape 2. Ajoutez l’en-tête d’emplacement onions « Onion-Location » au fichier de configuration d’hôte virtuel
Header set Onion-Location "http://votre-adresse-onion.onion%{REQUEST_URI}s"
Où votre-adresse-onion.onion
est l'adresse du Service Onion que vous souhaitez rediriger et {REQUEST_URI}
est le composant de chemin de l'URI demandé, comme "/index.html".
Exemple d'un Virtual Host :
<VirtualHost *:443>
ServerName <your-website.tld>
DocumentRoot /path/to/htdocs
Header set Onion-Location "http://votre-adresse-onion.onion%{REQUEST_URI}s"
SSLEngine on
SSLCertificateFile "/path/to/www.example.com.cert"
SSLCertificateKeyFile "/path/to/www.example.com.key"
</VirtualHost>
Étape 3. Recharger Apache
Rechargez le service apache2 pour que vos modifications de configuration prennent effet :
$ sudo systemctl reload apache2
Si vous obtenez un message d’erreur, quelque chose s’est mal passé et vous ne pouvez pas continuer avant de trouver ce qui ne fonctionne pas.
Étape 4. Tester votre Onion-Location
Pour tester si Onion-Location fonctionne, récupérez les en-têtes HTTP du site web, par exemple :
$ wget --server-response --spider your-website.tld
Recherchez l'entrée onion-location
et l'adresse du Service onion.
Ou ouvrez le site web dans le navigateur Tor et une pilule violette apparaîtra dans la barre d'adresse.
Nginx
Pour configurer un en-tête Onion-Location, l'opérateur de service doit d'abord configurer un service Onion.
Etape 1. Créez un service Onion en mettant ce qui suit dans torrc
:
HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock
Étape 2. Modifier le fichier de configuration du site web
Dans /etc/nginx/conf.d/<votre-site-web>.conf
ajoutez l'en-tête Onion-Location et l'adresse du service Onion.
Par exemple :
add_header Onion-Location http://<your-onion-address>.onion$request_uri;
Le fichier de configuration qui comprend l’Onion-Location devrait ressembler à ceci :
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;
}
Étape 3. Tester la configuration du site web
$ sudo nginx -t
Le serveur Web doit confirmer que la nouvelle syntaxe fonctionne :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Étape 4. Redémarrer nginx
$ sudo nginx -s reload
Si vous obtenez un message d’erreur, quelque chose s’est mal passé et vous ne pouvez pas continuer avant de trouver ce qui ne fonctionne pas.
Étape 5. Tester votre Onion-Location
Pour tester si Onion-Location fonctionne, récupérez les en-têtes HTTP du site web, par exemple :
$ wget --server-response --spider your-website.tld
Recherchez l'entrée onion-location
et l'adresse du Service onion.
Ou ouvrez le site web dans le navigateur Tor et une pilule violette apparaîtra dans la barre d'adresse.
Caddy
Caddy propose HTTPS automatique par défaut, il provisionne donc votre certificat TLS et s'occupe de la redirection HTTP vers HTTPS pour vous.
Pour inclure un en-tête d’Onion-Location si vous utilisez Caddy 2, ajoutez la déclaration suivante à votre fichier Caddyfile :
header Onion-Location http://<your-onion-address>.onion{path}
Si vous utilisez un site statique et que l'adresse onion se trouve dans la variable d'environnement $TOR_HOSTNAME
, votre fichier Caddy ressemblera à ceci :
your-website.tld
header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server
Tester la solution: Tester la solution avec :
$ wget --server-response --spider your-website.tld
Recherchez l'entrée onion-location
et l'adresse du Service onion.
Ou ouvrez le site Web dans le Navigateur Tor et une pastille violette apparaîtra dans la barre d'adresse.
Utilisation d'un attribut HTML <meta>
Le comportement identique de l’Onion-Location comprend l’option de le définir en tant qu’attribut HTML <meta>
http-equiv.
Elle peut être utilisée par les sites web qui préfèrent (ou doivent) définir un Onion-Location en modifiant le contenu HTML servi au lieu d'ajouter un nouvel en-tête HTTP.
L'en-tête Onion-Location équivaudrait à un <meta http-equiv="onion-location" content="http://<your-onion-service-address>.onion" />
ajouté dans l'élément d'en-tête HTML de la page Web. Remplacez <your-onion-service-address.onion>
par le Service Onion que vous souhaitez rediriger.
Limites
HTML ne peut pas lire l'URL demandée et l'insérer dynamiquement dans la balise http-equiv <meta>
.
C'est pourquoi les visiteurs sont toujours redirigés vers l'URL .onion spécifiée dans la partie contenu de la balise méta, quelle que soit la sous-page sur laquelle ils se trouvent.
Par conséquent, si possible, nous vous recommandons d'utiliser l'une des méthodes ci-dessus.
Plus de précisions
Consultez les spécifications de l’Onion-Location (page en anglais).