From a165c9300042bbf50166eec0d50cba7c4a334fc5 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sun, 12 Sep 2021 02:14:30 +0800 Subject: [PATCH] refactor: caroot --- README.md | 3 +- doc/caroot.md | 57 ++++++++++++++++++++++++ doc/flow.jpg | Bin 0 -> 46384 bytes packages/gui/src/view/pages/server.vue | 4 +- packages/gui/src/view/pages/setting.vue | 13 ++++-- packages/gui/src/view/style/index.scss | 5 +++ 6 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 doc/caroot.md create mode 100644 doc/flow.jpg diff --git a/README.md b/README.md index 91273a4..106aed5 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,8 @@ 第一次打开会提示安装证书,根据提示操作即可 > 根证书是本地随机生成的,所以不用担心根证书的安全问题(本应用不收集任何用户信息) -> 你也可以在加速服务设置中自定义根证书(PEM格式的证书与私钥) +> 你也可以在加速服务设置中自定义根证书(PEM格式的证书与私钥) +> [更多关于根证书的说明](./doc/caroot.md) > 火狐浏览器需要[手动安装证书](#3浏览器打开提示证书不受信任) diff --git a/doc/caroot.md b/doc/caroot.md new file mode 100644 index 0000000..4e9956b --- /dev/null +++ b/doc/caroot.md @@ -0,0 +1,57 @@ +# 关于信任根证书的说明 + +## 一、为什么要信任根证书。 + +要回答这个问题需要先掌握下面两个知识点 +### 知识点1:什么是根证书 +[百度百科-什么是根证书](https://baike.baidu.com/item/%E6%A0%B9%E8%AF%81%E4%B9%A6/9874620?fr=aladdin) + +当访问目标网站是https协议时,服务器会发送一个由根证书签发的网站ssl证书给浏览器,让浏览器用这个ssl证书给数据加密。 +浏览器需要先验证这个证书的真伪,之后才会使用证书加密。 +证书的真伪是通过验证证书的签发机构的证书是否可信,一直追溯到最初始的签发机构的证书(根证书)。 +浏览器只需信任根证书,间接的就信任了这条证书链下签发的所有证书。 + +windows、mac、linux或者浏览器他们都内置了市面上可信的大型证书颁发机构的根证书。 + +### 知识点2:中间人攻击 +本应用的实现原理如下图: + +![](./flow.jpg) + + +> 简单来说就是DevSidecar在本地启动了一个代理服务器帮你访问目标网站。 +> 实际上就是 [中间人攻击](https://baike.baidu.com/item/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB/1739730?fr=aladdin) 的原理,只是本应用没有用它来干坏事,而是帮助开发者加速目标网站的访问。 + +### 现在可以回答为什么要信任根证书 + +当目标网站不需要加速拦截时,直接走TCP转发,不需要中间人攻击,在此不多做讨论。 + +当目标网站需要拦截时(例如github),就需要通过中间人攻击修改请求或者请求其他替代网站,从而达到加速的目的。 + +例如加速github就需要修改如下几处 + +1. 直连访问github需要修改tls握手时的sni域名,规避***的sni阻断问题。 +2. asserts.github.com等静态资源拦截替换成fastgit.org的镜像地址 + +DevSidecar在第一次启动时会在本地随机生成一份根证书,当有用户访问github时,就用这份根证书来签发一份假的叫github.com的证书。 +如果浏览器事先信任了这份根证书,那么就可以正常访问DevSidecar返回的网页内容了。 + +## 二、信任根证书有安全风险吗 + +1. 根证书是DevSidecar第一次启动时本地随机生成的,除了你这台电脑没人知道这份根证书的内容。 +2. 代理请求目标网站时会校验目标网站的证书(除非关闭了NODE_TLS_REJECT_UNAUTHORIZED)。 + +> 综上所述,信任根证书没有问题。 + +> 最大的风险在于应用来源以及拦截配置里的替代网站。 + +> 对于应用来源风险: +> 请勿从未知网站下载DevSidecar应用,认准DevSidecar的官方版本发布地址 +> [Gitee Release](https://gitee.com/docmirror/dev-sidecar/releases) +> [Github Release](https://github.com/docmirror/dev-sidecar/releases) + +> 对于拦截配置里的替代网站风险: +> 1. 尽量缩小替代配置的范围 +> 2. 不使用来源不明的镜像地址,尽量使用知名度较高的镜像地址 + + diff --git a/doc/flow.jpg b/doc/flow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1703c00881b38804baba48261dffc55784dc2d95 GIT binary patch literal 46384 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 S9dNNAO180iI;w3iif^AD* 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 -
修改后需要重启应用
+
修改后需要重启应用
NODE_TLS_REJECT_UNAUTHORIZED -
开启此项之后,被代理应用关闭SSL校验也问题不大了
+
开启此项之后,被代理应用关闭SSL校验也问题不大了
- 开机自启 + 本应用开机自启 +
+ windows下建议开启开机自启。更多说明参考 +
启用远程配置 -
- 为提升用户体验, +
+ 应用启动时会向下面的地址请求配置补丁,无需发布升级包即可获得最新优化后的github访问体验。 +
如果您觉得远程更新配置有安全风险,请关闭此功能。
@@ -50,6 +54,9 @@ export default { mounted () { }, methods: { + openExternal (url) { + this.$api.ipc.openExternal(url) + }, onAutoStartChange () { this.$api.autoStart.enabled(this.config.app.autoStart.enabled) this.saveConfig() diff --git a/packages/gui/src/view/style/index.scss b/packages/gui/src/view/style/index.scss index 224bc66..bd5d99d 100644 --- a/packages/gui/src/view/style/index.scss +++ b/packages/gui/src/view/style/index.scss @@ -43,3 +43,8 @@ ol{ padding-inline-start: 20px; } +.form-help{ + font-size:12px; + line-height: 15px; + color: #aaa; +}