From af713462bfc9b2f2ac26734e64cdb72571c7b782 Mon Sep 17 00:00:00 2001 From: C8H17OH <45560872+C8H17OH@users.noreply.github.com> Date: Sun, 26 Jul 2026 00:32:46 +0800 Subject: [PATCH] Translate README to Simplified Chinese (#208) * Translate new README to zh-CN * Fix typos * Fix syntax "it works in my vs code!" --- src/languages/01-en.md | 4 +-- src/languages/02-cmn-CN.md | 74 ++++++++++++++++++++++++++++---------- 2 files changed, 57 insertions(+), 21 deletions(-) diff --git a/src/languages/01-en.md b/src/languages/01-en.md index f64a6bf..4ef1a4f 100644 --- a/src/languages/01-en.md +++ b/src/languages/01-en.md @@ -44,7 +44,7 @@ Censorship (also known as "filtering") means the profile will not send true info - **To add / edit a profile:** edit json files in `src` directory. - **To verify resolver IPs / hostnames:** compare mobileconfig files to their original websites (open files in a text editor). - Check out [developer.apple.com](https://developer.apple.com/documentation/devicemanagement/dnssettings) for more docs. -- **On demand activation:** You can optionally exclude some trusted Wi-Fi networks where you don't want to use encrypted DNS. To do so, add your SSIDs in the [OnDemandRules](https://github.com/paulmillr/encrypted-dns/blob/master/profiles/template-on-demand.mobileconfig#L22-L38) section inside the `PayloadContent` dictionary of a profile. +- **On demand activation:** You can optionally exclude some trusted Wi-Fi networks where you don't want to use encrypted DNS. To do so, add your SSIDs in the [OnDemandRules](https://github.com/paulmillr/encrypted-dns/blob/master/profiles/template-on-demand-default-https.mobileconfig#L22-L38) section inside the `PayloadContent` dictionary of a profile. ### Scripts @@ -64,7 +64,7 @@ Censorship (also known as "filtering") means the profile will not send true info - `npm run new` - interactively creates new profile from CLI options. Can also be ran with flags. - `scripts/new.test.ts` includes CLI snapshot tests and a PTY interactive flow test. - PTY test runs by default; set `NEW_TEST_PTY=0` to opt out. -- `src/scripts/sign-single.ts --ca cert.pem --priv_key key.pem [--chain chain.pem] path.mobileconfig` - sings single mobileconfig +- `src/scripts/sign-single.ts --ca cert.pem --priv_key key.pem [--chain chain.pem] path.mobileconfig` - signs single mobileconfig - `src/scripts/sign-single-openssl.ts --ca cert.pem --priv_key key.pem [--chain chain.pem] path.mobileconfig` Sign one `.mobileconfig` using OpenSSL. - Uses `-nosmimecap` to match local CMS signing policy. - `src/scripts/detach.ts signed.mobileconfig` - detach CMS signature from signed profile and print PEM to stdout. diff --git a/src/languages/02-cmn-CN.md b/src/languages/02-cmn-CN.md index d3ab796..2202665 100644 --- a/src/languages/02-cmn-CN.md +++ b/src/languages/02-cmn-CN.md @@ -2,39 +2,75 @@ # 加密 DNS 配置 -[DNS over HTTPS](https://zh.wikipedia.org/wiki/DNS_over_HTTPS) 和 [DNS over TLS](https://zh.wikipedia.org/wiki/DNS_over_TLS) 的配置描述文件。查看这篇文章以获取更多信息:[paulmillr.com/posts/encrypted-dns/](https://paulmillr.com/posts/encrypted-dns/) 以及有关[提交新描述文件](#提交新描述文件)的信息。 +[DNS over HTTPS](https://zh.wikipedia.org/wiki/DNS_over_HTTPS) 和 [DNS over TLS](https://zh.wikipedia.org/wiki/DNS_over_TLS) 的配置描述文件。查看这篇文章以获取更多信息:[paulmillr.com/posts/encrypted-dns/](https://paulmillr.com/posts/encrypted-dns/)。要添加一个新的供应商,或者修改已有的供应商:见 [#参与贡献](#参与贡献)。 -### 注意事项 +## 使用方法 -根据[谷歌这篇文章](https://security.googleblog.com/2022/07/dns-over-http3-in-android.html)的介绍,DoH 似乎比 DoT 的性能更优。 +从下表中安装 / 下载描述文件(`.mobileconfig` 文件),然后: -从 iOS 和 iPadOS 15.5 开始,为了简化咖啡厅、宾馆、机场等公共场所无线网络的身份认证,苹果将这些无线网络的[强制登录门户](https://zh.wikipedia.org/wiki/%E5%BC%BA%E5%88%B6%E9%97%A8%E6%88%B7)加入到了加密 DNS 排除规则中。这是个好消息,但还有一些其他问题我们无法修复,只有等苹果来解决: +iPhone 和 iPad: -- 无法启用加密 DNS:[Little Snitch & Lulu](https://github.com/paulmillr/encrypted-dns/issues/13)、[VPN](https://github.com/paulmillr/encrypted-dns/issues/18) -- 部分流量绕过加密 DNS:[终端和 App Store](https://github.com/paulmillr/encrypted-dns/issues/22)、[Chrome 浏览器](https://github.com/paulmillr/encrypted-dns/issues/19) +1. 使用 Safari 打开文件(其他浏览器可能会只下载文件而不提示安装) +2. 点击“允许”按钮,描述文件随即下载。 +3. 打开 **系统设置 => 通用 => VPN与设备管理**,选择下载的描述文件并点击“安装”按钮。 -如果你需要更进一步的隐私保护,请查看[使用 Tor 网络的加密 DNS](https://github.com/alecmuffett/dohot)。 +Mac: + +1. 确保下载的文件具有正确的扩展名:NAME.mobileconfig,而非 NAME.mobileconfig.txt。 +2. 选择苹果菜单 > “系统设置”,在侧边栏中点击“隐私与安全性”,然后点击右侧的“描述文件”。 + 你可能需要向下滚动。安装过程中你可能会被要求提供密码或者其他信息。 +3. 在“已下载”部分,双击描述文件。检查描述文件的内容,然后点击“继续”、“安装”或“注册”来安装描述文件。如果你的 Mac 上已经安装了一个旧版本的描述文件,新版本中的设置将覆盖旧版本。 ## 供应商 -“`审查=是`”表示描述文件不会发送某些主机“`主机名=IP`”关系的真实信息。 +“审查”(也称为“过滤”)意味着该描述文件对于某些主机不会发送关于“`主机名=IP`”关系的真实信息。 <%PROVIDERS_TABLE%> -## 安装 +## 已知问题 -要使设置在 **iOS**、**iPadOS** 和 **macOS** 中所有的应用程序上生效,你需要安装配置描述文件。此文件将指引操作系统使用 DoH 或 DoT。注意:只在系统无线局域网设置中设置 DNS 服务器 IP 是不够的——你需要安装描述文件。 +1. 某些应用和协议会忽略加密 DNS: + - 特定地区的 Firefox,所有地区的 App Store。[更多信息](https://github.com/paulmill/encrypted-dns/issues/22) + - iCloud 专用代理,VPN 客户端 + - Little Snitch,LuLu + - DNS 相关的命令行工具:`host`,`dig`,`nslookup` 等。 +2. 咖啡馆、酒店、机场的 [Wi-Fi 强制门户](https://zh.wikipedia.org/wiki/强制门户) 被苹果从加密 DNS 规则中排除;为了简化认证流程——这是合理的 +3. TLS DNS 更容易被供应商屏蔽,因为它使用非标准的 853 端口。 + [更多信息](https://security.googleblog.com/2022/07/dns-over-http3-in-android.html) +4. 基于 TOR 的加密 DNS 可能在隐私方面更好,但我们目前尚无此功能。 -iOS / iPadOS:使用 Safari 浏览器(其他浏览器只会下载该文件,不会弹出安装提示)打开 GitHub 上的 mobileconfig 文件,然后点击“允许”按钮,描述文件将完成下载。打开 **系统设置 => 通用 => VPN、DNS 与设备管理**,选择已下载的描述文件并点击“安装”按钮。 +## 参与贡献 -macOS [(官方文档)](https://support.apple.com/zh-cn/guide/mac-help/mh35561/): +- **添加 / 编辑一个描述文件:** 编辑 `src` 目录下的 json 文件。 +- **验证解析器的 IP / 主机名:** 比较 mobileconfig 文件与它们的原始网站(在文本编辑器中打开文件)。 +- 访问 [developer.apple.com](https://developer.apple.com/documentation/devicemanagement/dnssettings) 查看更多文档。 +- **按需激活:** 你可以选择排除一些不想使用加密 DNS 的受信任 Wi-Fi 网络。为此,在描述文件的 `PayloadContent` 字典下的 [OnDemandRules](https://github.com/paulmillr/encrypted-dns/blob/master/profiles/template-on-demand-default-https.mobileconfig#L22-L38) 字段中添加你的 SSID。 -1. 下载并保存描述文件,将其重命名为 `NAME.mobileconfig`,而不是 txt 之类的扩展名。 -2. 选取苹果菜单 >“系统设置”,点按边栏中的“隐私和安全性” ,然后点按右侧的“描述文件”。(你可能需要向下滚动。) - 安装期间,系统可能会要求你提供密码或其他信息。 -3. 在“已下载”部分中,连按描述文件。 -4. 检查描述文件内容,然后点按“继续”、“安装”或“注册”以安装描述文件。 +### 脚本 - 如果 Mac 上已安装了较早版本的描述文件,其设置将替换为更新版本中的设置。 +- `npm run build` - 重新构建描述文件、已签名描述文件和 README +- `npm run sign` - 使用 ECC SSL 证书重新签名所有描述文件(更新 `signature` 字段)。 + - 签名通过 [key-producer](https://github.com/paulmillr/micro-key-producer) 完成 + - 可以使用 Let's Encrypt 免费证书,但[会在45天内过期](https://letsencrypt.org/2026/02/24/rate-limits-45-day-certs)。 + - `certs` 子目录下需要包含以下文件: -<%PROVIDERS_LINKS%> \ No newline at end of file + ``` + `privkey.pem` : 你的证书的私钥。 + `fullchain.pem`: 大多数服务器软件中使用的证书文件。 + `chain.pem` : 在 Nginx >=1.3.7 中用于 OCSP Stapling。 + `cert.pem` + ``` + +- `npm run new` - 通过命令行交互创建新的描述文件。也可以带参数运行。 + - `scripts/new.test.ts` 包含命令行快照测试和 PTY 交互流程测试。 + - PTY 测试默认运行;设置 `NEW_TEST_PTY=0` 可跳过。 +- `src/scripts/sign-single.ts --ca cert.pem --priv_key key.pem [--chain chain.pem] path.mobileconfig` - 签名单个 mobileconfig +- `src/scripts/sign-single-openssl.ts --ca cert.pem --priv_key key.pem [--chain chain.pem] path.mobileconfig` 使用 OpenSSL 签名单个 `.mobileconfig`。 + - 使用 `-nosmimecap` 以匹配本地 CMS 签名策略。 +- `src/scripts/detach.ts signed.mobileconfig` - 从已签名的描述文件中分离出 CMS 签名并将 PEM 打印到标准输出. +- `npm run test` - 对于 `sign-single.ts` 和 `sign-single-openssl.sh` 进行一致性检查。 + - 通过 OpenSSL 生成临时的测试根/签名者证书。 + - 使用 `scripts/sign.ts` 和 `scripts/sign_openssl.sh` 签名同一描述文件。 + - 验证分离出的内容与嵌入式证书集的一致性。 + +<%PROVIDERS_LINKS%>