客戶驗證是讓洋蔥服務私密與驗核的方式。 它要求 Tor 客戶端提供受授權憑證才能連接洋蔥服務。 洋蔥服務第三版中,這個方案可以和多對密鑰(公鑰與私鑰)使用。 伺服器端使用公鑰設置,客戶必須透過私鑰才能訪問。

注意: 一旦完成用戶端認證設置,之後任何人即便有此地址也無法存取訪問。 如果沒設置授權,則任何取得洋蔥網址的人都可以訪問該服務。

設置洋蔥服務第三版

伺服器面

在伺服器端設置客戶授權,需要有<HiddenServiceDir>/authorized_clients/目錄,依照設定上的指示描述操作即會自動創建此目錄。 只有在 Tor 至少成功地載入一個驗證檔後,才能啟動站台服務的客戶授權。

現在您需要利用腳本來快速建立密鑰 (例如 Bash, RustPython)或是手動方式建立密鑰。

要手動生成密鑰,須先安裝openssl1.1 與basez

步驟 1. 使用 x25519 演算法產生密鑰:

 $ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem

如果您有看到錯誤訊息的話,那就表示有地方做錯了,您必須要先找出問題才能夠繼續往後的步驟。

步驟 2. 選擇密鑰格式為 base32:

私鑰

$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key

公鑰

$ openssl pkey -in /tmp/k1.prv.pem -pubout | grep -v " PUBLIC KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.pub.key

步驟 3. 複製公鑰:

 $ cat /tmp/k1.pub.key

步驟 4. 建立驗證的客戶檔案:

格式化客戶驗證並在<HiddenServiceDir>/authorized_clients/ 目錄下建立新檔案。 目錄下每個檔案的副檔名應為 ".auth" (例如 "alice.auth", 則檔名則不要緊),且其內容格式須為:

 <auth-type>:<key-type>:<base32-encoded-public-key>

支援 <auth-type> 的值為: "descriptor".

支援 <key-type> 的值為: "x25519".

<base32-encoded-public-key> 是原始金鑰位元組的 base32 表示形式(x25519 為 32 位元組)。

例如檔案 /var/lib/tor/hidden_service/authorized_clients/alice.auth 看起來應像這樣:

 descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ

如果打算需要更多的客戶驗證,每個檔案應只有一行,不符規式的檔案會被略過。

步驟 5. 重新啟動 Tor 服務:

 $ sudo systemctl reload tor

如果您有看到錯誤訊息的話,那就表示有地方做錯了,您必須要先找出問題才能夠繼續往後的步驟。

重要: 撤銷用戶可以透過移除 ".auth" 檔案達成,然而撤銷生效必須等到 Tor 過程重啟。

用戶面

要透過客戶授權來訪問洋蔥服務第3版,請先確認 Tor 設定檔中有設置 ClientOnionAuthDir。 例如新增這行到 /etc/tor/torrc :

 ClientOnionAuthDir /var/lib/tor/onion_auth

然後在 <ClientOnionAuthDir>目錄底下建立一個 .auth_private 檔案讓洋蔥服務對應這個密鑰(i.e. 'bob_onion.auth_private')。 <ClientOnionAuthDir>/<user>.auth_private 檔案內容類似這樣:

 <56-char-onion-addr-without-.onion-part>:descriptor:x25519:<x25519 private key in base32>

例如:

 rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ

如果依本頁指示手動產生密鑰對,可以複製與使用步驟 2所產生的私鑰。 然後重啟tor 就可以連接洋蔥服務的地址。

如果想為某個洋蔥站創建一把私鑰,用戶不一定要編改 Tor 瀏覽器的設定檔 torrc,可直接在 Tor 瀏覽器 界面下輸入私鑰。

更多關於客戶授權的資訊,請參見Tor 手冊.