これはNginx側が認識するための仮のローカルのポートです。
Onion Serviceではポート解放をする必要はありません。
HiddenServiceDir /etc/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 443 127.0.0.1:443
次にHARICAからPKCS#7 (chain)の証明書をダウンロードして、これをPEM形式に変換します。
$ openssl pkcs7 -print_certs -in Cert_chain.p7b -out onion.pem
続いてNginxの設定ファイルを以下のように設定します。
server {
listen 443 ssl;
server_name examplexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd.onion;
ssl_certificate /etc/nginx/cert/onion.pem;
ssl_certificate_key /etc/nginx/cert/onion.key;
}
listen
には先ほどtorrcで設定したSSL用のポート(ここでは443)を指定します。
ssl_certificate
とssl_certificate_key
には先ほど変換したPEM形式の証明書と、証明書の発行時に作成した秘密鍵のパスをそれぞれ指定します。
ちなみに、SSLでない方のポート(ここでは80)に来たリクエストをSSLのポート(443)にリダイレクトさせることもできます。
設定が終わったらtorとNginxを再起動します。
$ sudo systemctl restart tor
$ sudo systemctl restart nginx
しばらくしてから、Tor Browser等でサイトにアクセスしてみてください。
Tor BrowserではOnion ServiceのWebサイトにアクセスすると、必ず玉ねぎの鍵アイコンが出るので、そこから証明書の情報を確認してください。
情報が正しければ設定は完了です。おつかれさまでした。
Onion ServiceのWebサイトが通常のWebのサイトのミラーである場合、Tor BrowserにOnion ServiceのWebサイトが利用可能であることを知らせることができます。
アドレスバーの横に「.onion available」というボタンが表示されて簡単にOnion Service版のサイトにアクセスできるようになるので、設定しておいて損はないはずです。
なおOnion Serviceでない、HTTPSに対応しているサイトでのみ有効です。
<head>
内に以下のようなタグを追加するだけです。
<meta http-equiv="Onion-Location" content="https://examplexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd.onion/">
Onion-Locationヘッダーを送信することもできます。
例えばNginxで設定する場合は以下のようにします。
server {
listen 443 ssl;
server_name example.com;
add_header Onion-Location "https://examplexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd.onion$request_uri";
}