L’emplacement oignon « Onion-Location » permet d’annoncer facilement un site oignon aux utilisateurs. Vous pouvez soit configurer un serveur Web pour qu’il affiche un en-tête d’emplacement oignon ou ajouter un méta-attribut HTML au site Web.
For the header to be valid the following conditions need to be fulfilled:
- La valeur de l’emplacement oignon « 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’emplacement oignon doit être servie par HTTPS.
- La page Web qui définit l’en-tête d’emplacement oignon ne doit pas être un site oignon.
In this page, the commands to manage the web server are based Debian-like operating systems and may differ from other systems. Check your web server and operating system documentation.
Apache
To configure this header in Apache 2.2 or above, you will need to enable a headers
and rewrite
modules and edit the website Virtual Host file.
Step 1. Enable headers and rewrite modules and reload 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 oignon « Onion-Location » au fichier de configuration d’hôte virtuel.
Header set Onion-Location « http://votre-adresse-onion.onion%{REQUEST_URI}s »
Where your-onion-address.onion
is the onion service address you want to redirect and {REQUEST_URI}
is the path component of the requested URI, such as "/index.html".
Virtual Host example:
<VirtualHost *:443>
ServerName <votre-site-Web.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>
Step 3. Reload Apache
Reload the apache2 service, so your configuration changes take effect:
$ 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 emplacement oignon
Pour tester si l’emplacement oignon fonctionne, récupérez les en-têtes HTTP du site Web, par exemple :
$ wget --server-response --spider votre-site-Web.tld
Cherchez l’entrée onion-location
et l’adresse du service oignon.
Or open the website in Tor Browser and a purple pill will appear in the address bar.
Nginx
Pour configurer un en-tête d’emplacement oignon, l’opérateur du service devrait d’abord configurer un service oignon.
Step 1. Create an Onion service by setting the following in torrc
:
HiddenServiceDir /var/lib/tor/hs-my-website/
HiddenServiceVersion 3
HiddenServicePort 80 unix:/var/run/tor-hs-my-website.sock
Step 2. Edit website configuration file
In /etc/nginx/conf.d/<votre-site-Web>.conf
, ajoutez l’en-tête d’emplacement oignon ainsi que l’adresse du service oignon.
Par exemple :
add_header Onion-Location http://<your-onion-address>.onion$request_uri;
Le fichier de configuration qui comprend l’emplacement oignon devrait ressembler à ceci :
server {
listen 80;
listen [::]:80;
server_name <votre-site-Web.tld>;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <votre-site-Web.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;
}
Step 3. Test website configuration
$ sudo nginx -t
The web server should confirm that the new syntax is working:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Step 4. Restart 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 emplacement oignon
Pour tester si l’emplacement oignon fonctionne, récupérez les en-têtes HTTP du site Web, par exemple :
$ wget --server-response --spider votre-site-Web.tld
Cherchez l’entrée onion-location
et l’adresse du service oignon.
Or, open the web site in Tor Browser and a purple pill will appear in the address bar.
Caddy
Caddy features automatic HTTPS by default, so it provisions your TLS certificate and takes care of HTTP-to-HTTPS redirection for you. Pour inclure un en-tête d’emplacement oignon si vous utilisez Caddy 2, ajoutez la déclaration suivante à votre fichier Caddyfile :
header Onion-Location http://<your-onion-address>.onion{path}
If you're running a static site and have the onion address in a $TOR_HOSTNAME
environment variable, your Caddyfile will look like this:
votre-site-Web.tld
header Onion-Location http://{$TOR_HOSTNAME}{path}
root * /var/www
file_server
Testing it out: Test it out with:
$ wget --server-response --spider votre-site-Web.tld
Cherchez l’entrée onion-location
et l’adresse du service oignon.
Or, open the web site in Tor Browser and a purple pill will appear in the address bar.
Using an HTML <meta>
attribute
Le comportement identique de l’emplacement oignon comprend l’option de le définir en tant qu’attribut HTML <meta>
http-equiv.
Cela peut être utilisé par les sites Web qui préfèrent (ou qui doivent) définir un emplacement oignon en modifiant le contenu HTML servi au lieu d’ajouter un nouvel en-tête HTTP.
L’en-tête d’emplacement oignon « Onion-Location » équivaudrait à un <meta http-equiv="onion-location" content="http://<adresse-de-votre-service-onion>.onion" />
ajouté à l’élément HTML head de votre page Web. Remplacez <adresse-de-votre-service-onion.onion>
par le service onion que vous voulez rediriger.
Plus de précisions
Consultez les spécifications de l’emplacement oignon (page en anglais).