SSD Nodes Learn 🎉 VPS من $5.50/شهر
الأدلة Matt Connorبقلم Matt Connor

كيف تستضيف موقع onion على خادم VPS

شغّل خدمة onion من الإصدار v3 على Ubuntu باستخدام Tor وNginx المرتبط بـ loopback، ثم أغلق التسريبات التي قد تربط العنوان بعنوان IP العام.

ما الذي تنشئه

موقع onion هو خادم ويب عادي لا يستجيب إلا عبر شبكة Tor. ثبّت Tor، وأضف سطرين إلى /etc/tor/torrc، واقرأ العنوان الذي يكتبه Tor لك، ثم اربط Nginx بالعنوان 127.0.0.1 حتى لا يستجيب أي شيء على عنوان IP العام. تستغرق عملية التثبيت عشر دقائق. أما بقية هذا الدليل فتتناول قائمة التسريبات، لأن الطريقة المعتادة لفشل موقع onion هي أن تشير إعداداته نفسها مباشرةً إلى المشغّل.

بدأ Tor باسم «موجّه البصل»، وخدمة onion هي خدمة لا يمكنك الوصول إليها إلا من خلاله. يتكوّن عنوان الإصدار 3 من 56 حرفاً يتبعها .onion، وتمثل هذه الأحرف مفتاح ed25519 العام للخدمة، إضافةً إلى قيمة تحقق وبايت الإصدار، بعد ترميزها باستخدام base32. أزيلت عناوين الإصدار 2، التي كانت تتكون من 16 حرفاً، من الشبكة في 2021، لذلك فإن أي عنوان تنشئه اليوم سيكون v3. العنوان هو المفتاح نفسه، وينتج عن ذلك أمران. يكون الاتصال مشفراً وموثّقاً من طرف إلى طرف من دون جهة إصدار شهادات، ويعني فقدان ملف المفتاح فقدان العنوان نهائياً.

لا يقبل خادمك أي اتصال وارد. يختار Tor عدة مرحلات كنقاط تقديم، ويرفع واصفاً موقّعاً إلى خوادم الدليل، ثم يلتقي بكل زائر عبر مرحّل rendezvous يختاره الزائر. كل اتصال من هذه الاتصالات صادر من خادمك. لا يوجد منفذ تحتاج إلى فتحه، ولا سجل DNS تحتاج إلى نشره.

تثبيت tor من مستودع Tor Project

توفّر Ubuntu حزمة tor في مستودع universe، لكنها تبقى قريبة من الإصدار الذي كان متاحاً عند تجميد الإصدار. يتابع مستودع Tor Project الخاص الإصدار المستقر الحالي، وهذا هو الإصدار المطلوب للبرنامج الذي يحدد ما إذا كان عنوانك سيبقى ملكك.

sudo apt update
sudo apt install -y apt-transport-https gnupg wget
KEYURL=https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc
wget -qO- "$KEYURL" | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null

يستخدم إدخال المستودع تنسيق deb822، ويجب أن يكون Suites هو الاسم الرمزي لإصدار Ubuntu لديك. اقرأه من /etc/os-release بدلاً من كتابته، لأن الاسم الرمزي الخاطئ ينشئ مستودعاً يُحلّ بشكل صحيح، لكنه لا يحتوي على حزم لإصدارك.

. /etc/os-release
sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $VERSION_CODENAME
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring

تحافظ حزمة deb.torproject.org-keyring على تحديث مفتاح التوقيع، لذلك لا يؤدي تدوير المفتاح إلى تعطيل apt update بعد عام من الآن. تحقق من بدء tor ووصوله إلى الشبكة:

tor --version
sudo journalctl -u tor@default -n 20

يجب أن تنتهي journal بالرسالة Bootstrapped 100% (done): Done. إذا بقي tor في الحالة Bootstrapped 10%، فهذا يعني أنه لا يملك مساراً صادراً. افحص جدار الحماية الشبكي لدى مزود الخدمة وقواعد الاتصالات الصادرة لديك: يجب أن يعرض sudo ufw status verbose القيمة allow (outgoing) كإعداد افتراضي.

هناك اسمان مهمان من هذه النقطة فصاعداً. تشغّل الحزمة tor بصفة المستخدم debian-tor، ووحدة التشغيل هي tor@default.service، لأن tor.service في Debian وUbuntu عبارة عن غلاف حول المثيل. اطلب الحالة والسجلات باستخدام اسم المثيل، وستحصل دائماً على العملية الفعلية.

تهيئة خدمة onion في torrc

أضف سطرين إلى /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/onion_site/
HiddenServicePort 80 127.0.0.1:8080

يحتوي HiddenServiceDir على المفاتيح والعنوان اللذين يحتفظ بهما Tor لهذه الخدمة. لا تنشئه بنفسك. ينشئه Tor عند بدء التشغيل بالمالك والوضع اللذين يحتاج إليهما، كما أن إنشاء الدليل بصلاحيات root يؤدي إلى أول فشل في قائمة الأعطال أدناه.

يتكوّن HiddenServicePort من جزأين، وخلطهما هو الخطأ الأول الشائع. الرقم الأول هو المنفذ الذي يتصل به الزائر داخل النفق، لذلك فإن 80 هو المتوقع، ولا يوجد سبب لتغييره. أما الجزء الثاني فهو العنوان المحلي الذي يوجّه Tor حركة الشبكة إليه. يوجّه HiddenServicePort 80 المجرد حركة الشبكة إلى 127.0.0.1:80، لذلك فإن كتابة العنوان صراحةً واستخدام منفذ مرتفع يُبقي vhost الخاص بـonion بعيداً عن أي خدمة تستمع على المنفذ 80.

sudo systemctl restart tor@default
sudo ls -l /var/lib/tor/onion_site/

يجب أن يحتوي الدليل على hostname وhs_ed25519_public_key وhs_ed25519_secret_key ودليل authorized_clients فارغ.

اقرأ عنوان ‎.onion‎ الخاص بك

sudo cat /var/lib/tor/onion_site/hostname

يظهر سطر واحد: 56 حرفاً بترميز base32 و.onion. هذه السلسلة هي الهوية الكاملة للموقع. لا يعيّنها أحد، ولا يمكن لأحد نقلها، ولا يستطيع أحد انتزاعها منك ما دمت تحتفظ بملف المفتاح. انسخها الآن، لأن كل إعداد أدناه يحتاج إليها. سيكتب هذا الدليل بقية النص على شكل <your-address>.onion.

قدّم الموقع من nginx المرتبط بـ127.0.0.1

sudo apt install -y nginx
sudo install -d -m 755 /srv/onion

اكتب /etc/nginx/sites-available/onion:

server {
    listen 127.0.0.1:8080;
    server_name <your-address>.onion;

    root /srv/onion;
    index index.html;

    server_tokens off;
    etag off;
    access_log off;
    error_log /var/log/nginx/onion.error.log error;
}
echo '<h1>hello from the onion</h1>' | sudo tee /srv/onion/index.html
sudo ln -s /etc/nginx/sites-available/onion /etc/nginx/sites-enabled/onion
sudo nginx -t
sudo systemctl reload nginx

تحقّق الآن من أمرين على الخادم. الأول هو أن nginx يستجيب لاسم onion، وهو ترويسة Host التي سيرسلها tor حرفياً:

curl -s -H 'Host: <your-address>.onion' http://127.0.0.1:8080/

والثاني هو أنه يستجيب على هذا العنوان فقط، ولا يستجيب في أي مكان آخر:

sudo ss -tlnp | grep 8080

يجب أن يقرأ عمود العنوان 127.0.0.1:8080. إذا قرأ 0.0.0.0:8080 أو *:8080، فهذا يعني أن موقع onion متاح أيضاً على الإنترنت العام، وهذا أول بند في قائمة التسرب. يرتبط السطر listen 8080; الذي لا يحتوي على عنوان بكل الواجهات، وهذا هو الإعداد الافتراضي.

افتح العنوان في Tor Browser. يستغرق التحميل الأول بضع ثوانٍ بينما يجلب العميل واصفك ويبني دائرة rendezvous.

تفضّل وثائق Tor Project نفسها استخدام Unix socket بدلاً من منفذ loopback: HiddenServicePort 80 unix:/var/run/tor/onion_site.sock، مع استماع nginx على هذا المسار. لا يمكن الوصول إلى socket من مضيف آخر إطلاقاً، حتى إذا أضيفت إلى الخادم واجهة ثانية لاحقاً. لكن ذلك يتطلب ضبط صلاحيات الملفات، لأن nginx ينشئ socket ويتصل به tor بصفته debian-tor، ولذلك يجب أن يتفق المستخدمان على صلاحيات الدليل. استخدام loopback مع مخرجات ss متحقق منها أسهل في الضبط الصحيح، وهو ما يفترضه باقي هذا الدليل.

عند تشغيل الموقع على loopback، لا يحتاج الخادم إلى أي قاعدة واردة له. أبقِ المنفذ 22 مفتوحاً لاستخدامك، وامنع الباقي (إعدادات ufw الافتراضية المهمة على VPS). تذكّر أن جدار الحماية لا يلغي خدمة مرتبطة بـ0.0.0.0، بل يرشّح الحزم التي تصل إلى جدار الحماية فقط. تجعل الحاويات هذا الأمر أكثر وضوحاً، لأن نشر منفذ Docker يكتب قواعد iptables قبل ufw، ولذلك يضع -p 8080:80 الواجهة الخلفية لـonion على عنوان IP العام، بينما يظل ufw يعرض المنفذ على أنه مرفوض. انشر منافذ الحاويات بصيغة -p 127.0.0.1:8080:80.

التسريبات التي تزيل إخفاء هوية موقع onion

يخفي Tor موقع الخادم. لكنه لا يخفي ما يقوله الخادم. كل عنصر أدناه تنشره مكدستك أنت.

الموقع نفسه يستجيب على عنوان IP العام

هذا هو التسريب الذي يفاجئ كثيراً من الأشخاص. تفهرس أدوات الفحص استجابة HTTP لكل عنوان قابل للتوجيه باستمرار، وتكون هذه النتائج عامة وقابلة للبحث. إذا قدّمت الصفحة نفسها على عنوان IP العام وعلى عنوان onion، فإن ربطهما يتطلب استعلاماً واحداً: العنوان نفسه، وhash الأيقونة نفسها، وETag نفسه، والترتيب نفسه للرؤوس. سطر listen 127.0.0.1:8080; أعلاه هو الحل. تحقّق من ذلك باستخدام جهاز مختلف، لا من الخادم نفسه:

curl -sv --max-time 5 http://<your-public-ip>:8080/

تُعد Connection refused أو مهلة الانتظار النتيجة الصحيحة. ظهور أي HTML يعني أن الموقع عام. إذا كان الخادم يشغّل أيضاً موقع clearnet، فامنح ذلك الـvhost جذرًا خاصاً به، وأبقِ كتلة default_server صريحة على المستمع العام، حتى لا يمكن لرأس Host غير المطابق أن يمرّ إلى vhost الخاص بـonion.

لافتات الإصدارات

curl -sI http://127.0.0.1:8080/ | grep -i '^server'

يستجيب nginx الافتراضي بـ Server: nginx/1.24.0. تشكّل سلسلة الإصدار هذه، مع الترتيب الدقيق للرؤوس الأخرى، بصمة تطابق موقع onion مع مضيف clearnet لديك. يقلل server_tokens off; ذلك إلى Server: nginx. لكنه لا يزيل الرأس، ولا يوفّر nginx توجيهاً مضمّناً يفعل ذلك، لذا تكون وحدة headers-more هي الحل المعتاد إذا أردت إزالته. يضيف PHP القيمة X-Powered-By إلى أن تضبط expose_php = Off. وينبغي إدراج etag off; في القائمة نفسها، لأن nginx ينشئ ETag من وقت تعديل الملف وحجمه، ولذلك تحصل الملفات نفسها، عند نسخها إلى خادمين، على ETag نفسه في كليهما.

عناوين URL مطلقة تشير إلى نطاق clearnet لديك

وسم rel="canonical"، أو og:url في Open Graph، أو موجز RSS، أو خريطة موقع، أو رسالة بريد إلكتروني لإعادة تعيين كلمة المرور، أو عنوان URL ثابت لشعار. يكفي أي عنصر منها لتسمية موقع clearnet داخل صفحة مقدمة عبر onion. استخدم مسارات نسبية إلى الجذر مثل /static/logo.svg، ودع التطبيق يقرأ عنوان URL الأساسي من مضيف الطلب بدلاً من قيمة ثابتة. وإعادات التوجيه هي الخلل نفسه في موضع آخر: يرسل return 301 https://example.com$request_uri; في كتلة catch-all زائر onion إلى نطاقك الحقيقي، ويقدّم له رأس Location الإجابة مباشرة.

شهادة TLS مشتركة مع موقع clearnet

يثبت عنوان onion هويته بنفسه، لأن العنوان هو المفتاح العام، ولذلك يكون http:// عبر اتصال onion مشفراً من طرف إلى طرف أصلاً، ويتعامل معه Tor Browser باعتباره سياقاً آمناً. يؤدي تثبيت شهادتك الحالية على vhost الخاص بـonion إلى نشر الصلة بين الموقعين، لأن كل شهادة موثوقة عامة تُسجّل في سجلات Certificate Transparency، وهذه السجلات عامة ودائمة وقابلة للبحث بالاسم. أبقِ شهادات Let's Encrypt على vhost الخاص بـclearnet واترك vhost الخاص بـonion يعمل عبر HTTP العادي.

الخطوط والتحليلات التابعة لجهات خارجية

خط من CDN (شبكة توصيل المحتوى)، أو script للتحليلات. يجلب متصفح الزائر كل عنصر منهما مباشرة، ولذلك تعرف الجهة الخارجية أن شخصاً ما حمّل صفحتك، وعادةً تعرف الصفحة أيضاً. كما أن مستويات الأمان الأكثر تشدداً في Tor Browser تحظر الطلب على أي حال، مما يترك تخطيطاً معطلاً. استضف محلياً كل أصل تحتاج إليه الصفحة.

عدم تطابق رأس Host

إذا لم يطابق server_name رأس Host الذي يرسله tor، يعود nginx إلى الخادم الافتراضي لعنوان listen ذلك. على خادم يحتوي على vhost واحد، لا يظهر هذا الأمر، لأن كتلة الخادم الوحيدة هي الافتراضية أيضاً. إذا أضفت vhost خاصاً بـclearnet لاحقاً، فقد تبدأ طلبات onion بالوصول إليه، مع وسومه الأساسية وإعادات توجيهه. أعد تشغيل فحص curl -H 'Host: ...' بعد كل تغيير في nginx، وابحث في النتيجة عن نطاقك الحقيقي باستخدام grep:

curl -s -H 'Host: <your-address>.onion' http://127.0.0.1:8080/ | grep -o 'https\?://[^"]*' | sort -u

تحديد العملية التي تملك كل socket يشكّل معظم هذا العمل (كيفية عمل المنافذ وsockets الاستماع في Linux).

ما يبقى في السجلات

يصل كل طلب من 127.0.0.1، لذلك لا يملك nginx عنوان زائر يسجله، ولا تكلّفك access_log off; شيئاً. أما التطبيق الذي يعمل فوقه فمسألة مختلفة، لأن عليك التعامل مع طلب أو عنوان بريد إلكتروني أو بيانات وصفية لملف مرفوع. وتُحتسب عاداتك أنت أيضاً: إدارة الخادم عبر تسجيل دخول غير محصّن تقع خارج نطاق حماية Tor، لذلك اعتبر تحصين SSH على VPS نفسه جزءاً من هذا الإعداد.

انسخ مفتاحك الخاص احتياطياً، لأنه يمثّل العنوان

/var/lib/tor/onion_site/hs_ed25519_secret_key هي الخدمة. لا يوجد مسجّل نطاقات ولا آلية استرداد. إذا فقدته، يختفي العنوان. وإذا نسخته، يمكن لأي شخص يملك النسخة تقديم محتواه الخاص على عنوانك، ولا توجد طريقة تتيح لك إبطال أي شيء.

sudo systemctl stop tor@default
sudo tar -C /var/lib/tor -czf onion-keys.tgz onion_site
sudo chmod 600 onion-keys.tgz
sudo systemctl start tor@default

شفّر ذلك الأرشيف (gpg -c onion-keys.tgz) وانقله خارج الخادم. عند الاستعادة على VPS جديد، تحتاج إلى الأرشيف وملكية الهوية التي يتوقعها tor:

sudo systemctl stop tor@default
sudo tar -C /var/lib/tor -xzf onion-keys.tgz
sudo chown -R debian-tor:debian-tor /var/lib/tor/onion_site
sudo chmod 700 /var/lib/tor/onion_site
sudo systemctl start tor@default
sudo cat /var/lib/tor/onion_site/hostname

يظهر العنوان نفسه على العتاد الجديد بعد دقيقة أو دقيقتين من إعادة نشر tor للواصف. هذه هي عملية الترحيل كاملة: لا حاجة إلى تغيير DNS ولا إلى إعادة إصدار الشهادة.

Onion-Location عندما يكون الموقع متاحاً أيضاً على clearnet

إذا كان onion وسيلةً للراحة وليس سراً، فأعلِن عنه من vhost الخاص بـclearnet:

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

يعرض Tor Browser عندئذ زر .onion available في شريط العناوين، ويتيح التبديل. لا يُعتدّ بهذا الرأس إلا عندما تُقدَّم صفحة clearnet عبر HTTPS، وتكون القيمة عنوان onion صالحاً.

توجد هنا قاعدة في nginx قد تسبب مشكلة. تُورَّث توجيهات add_header إلى كتلة location فقط عندما لا تعرّف تلك الكتلة أي توجيهات خاصة بها. لذلك فإن location التي تحتوي على add_header خاص بها تُسقط Onion-Location بصمت. كرّر التوجيه فيها، أو أبقِ جميع رؤوس الاستجابة في مكان واحد. يؤدي نشر هذا الرأس عمداً إلى ربط الموقعين، وهذا صحيح بالنسبة إلى نسخة مرآة، لكنه غير صحيح لأي شيء يُفترض أن يبقى غير مرتبط.

العناوين المخصّصة

mkp224o ينشئ أزواج مفاتيح حتى ينتج أحدها عنواناً يبدأ بالبادئة التي طلبتها. هذا بحث بالقوة الغاشمة، لذلك لا تحتاج إلى إعداد أي شيء سوى البادئة والمدة التي تقبل انتظارها.

sudo apt install -y git gcc libc6-dev libsodium-dev make autoconf
git clone https://github.com/cathugger/mkp224o
cd mkp224o
./autogen.sh
./configure --enable-amd64-51-30k
make
./mkp224o -d onionkeys blog

يُحفظ كل عنوان مطابق في onionkeys/<address>.onion/ الذي يحتوي على hostname وhs_ed25519_secret_key. ثبّت أحدها بإيقاف tor، ثم انسخ ذلك الدليل إلى HiddenServiceDir، وبعدها طبّق chown وchmod 700 نفسيهما المبيّنين في إجراء الاستعادة أعلاه.

طول البادئة هو العامل الذي يحدد التكلفة بأكملها. العنوان بترميز base32، لذلك تضاعف كل محرف إضافي تطلبه العدد المتوقع من المفاتيح بمقدار 32. تكتمل بادئة قصيرة على حاسوب محمول. أما البادئة الطويلة فلن تكتمل على أي جهاز تملكه. كما تعوّد البادئة المخصّصة القرّاء على التعرّف إلى المحارف الأولى بدلاً من العنوان كاملاً، وهذه هي العادة التي تعتمد عليها النسخ الاحتيالية من مواقع onion.

أنماط الفشل، مع النصوص التي ستظهر لك

لا يوجد ملف hostname بعد إعادة التشغيل. لم يبدأ Tor، أو رفض الدليل. يوضح sudo journalctl -u tor@default -n 50 اسمه:

/var/lib/tor/onion_site/ is not owned by this user (debian-tor, 108) but by root (0). Perhaps you are running Tor as the wrong user?

هكذا يبدو الدليل الذي أُنشئ يدوياً. أصلح المالك والوضع، أو احذف الدليل ودَع tor ينشئه.

يعرض Tor Browser الرسالة Onionsite Not Found (0xF0). تعذّر على العميل جلب واصف، ولذلك لا يوجد أي شيء منشور على ذلك العنوان من منظور الشبكة. تأكد من أن tor قيد التشغيل وأنه أكمل عملية التمهيد، وقارن العنوان الذي أدخلته مع sudo cat /var/lib/tor/onion_site/hostname حرفاً بحرف، ثم افحص الساعة. يحتاج Tor إلى وقت دقيق لنشر الواصفات والتحقق منها، ويجب أن يعرض timedatectl القيمة System clock synchronized: yes.

يُحلّ العنوان، لكن الصفحة لا تُحمّل مطلقاً. أكمل Tor عملية rendezvous، ثم فشل في القفزة الأخيرة من tor إلى nginx. وهذه القفزة محلية، لذلك يظل سجل tor صامتاً. شغّل curl -sI http://127.0.0.1:8080/ على الخادم. يعني Connection refused أن nginx متوقف أو يستمع على عنوان مختلف عن العنوان الذي يشير إليه HiddenServicePort.

تُحمّل الصفحة، لكن كل رابط ينتقل إلى نطاقك الحقيقي. السبب هو وجود عناوين URL مطلقة في القوالب. شغّل فحص grep -o 'https\?://[^"]*' المذكور أعلاه، وأصلح ما يطبعه قبل مشاركة العنوان في أي مكان.

يعمل الموقع، ثم يتوقف بعد إعادة التشغيل. أعد تشغيل الجهاز مرة واحدة عمداً قبل الاعتماد على الموقع، ثم شغّل sudo systemctl status tor@default وsudo systemctl status nginx. تبدو الخدمة التي شغّلها أحدهم يدوياً مطابقة للخدمة المفعّلة حتى يُعاد تشغيل الجهاز.

FAQ

هل أحتاج إلى فتح منفذ في جدار الحماية لخدمة onion؟

لا. يجري daemon الخاص بـtor اتصالات صادرة فقط مع خوادم الدليل ونقاط التقديم ومرحلات الالتقاء، لذلك لا تحتاج إلى قاعدة للاتصالات الواردة، ويستمع خادم الويب نفسه على 127.0.0.1. أبقِ ufw على الإعداد الافتراضي الذي يرفض الاتصالات الواردة، مع السماح بـSSH. وتعني الخاصية نفسها أن خدمة onion تعمل من جهاز خلف NAT (ترجمة عناوين الشبكة) حتى من دون عنوان IP عام.

لماذا لا أستطيع الوصول إلى عنوان .onion الخاص بي في Tor Browser؟

ابدأ التحقق من الخادم إلى الخارج. يجب أن يعرض sudo journalctl -u tor@default -n 50 القيمة Bootstrapped 100% (done): Done، ثم يجب أن يعرض curl -sI http://127.0.0.1:8080/ على الخادم سطر حالة، وبعد ذلك قارن العنوان الذي أدخلته بالملف hostname، لأن وجود حرف واحد غير صحيح يعني خدمة مختلفة ببساطة. تعني Onionsite Not Found (0xF0) عدم العثور على واصف للعنوان، ويعني ذلك عادةً أن tor لا يعمل أو أن ساعة النظام غير صحيحة.

هل يمكنني نقل موقعي onion إلى خادم جديد والاحتفاظ بالعنوان نفسه؟

نعم. يُشتق العنوان من hs_ed25519_secret_key، لذلك انسخ HiddenServiceDir بالكامل إلى الخادم الجديد، واضبط ملكيته على debian-tor وصلاحياته على mode 700، ثم شغّل tor. يعود العنوان إلى العمل بعد إعادة نشر الواصف، ولا يوجد سجل DNS يحتاج إلى تحديث. إذا فقدت هذا الملف، فلا يمكن استعادة العنوان، لذلك أنشئ له نسخة احتياطية مشفّرة خارج الخادم في يوم إنشائه.

هل يحتاج موقع onion إلى شهادة HTTPS؟

لا. العنوان المؤلف من 56 حرفاً هو المفتاح العام للخدمة، لذلك يكون الاتصال مشفّراً ومصادقاً عليه من الطرف إلى الطرف، ويتعامل Tor Browser مع http:// على اسم .onion باعتباره سياقاً آمناً. إعادة استخدام شهادة clearnet على onion vhost أسوأ من عدم فعل أي شيء، لأن سجلات Certificate Transparency عامة وتسجّل بشكل دائم الأسماء التي تشترك في شهادة. والسبب الوحيد لشراء شهادة لاسم .onion هو الحصول على تأكيد للعلامة التجارية من CA التي تصدر هذه الشهادات، وهذا الرابط عام بحكم تصميمه.