Browse Source

refactor: 1

pull/192/head
xiaojunnuo 3 years ago
parent
commit
566cdbe089
  1. 2
      README.md
  2. 9
      doc/caroot.md
  3. 1
      packages/core/src/config/index.js
  4. 5
      packages/gui/src/view/components/setup-ca.vue
  5. 10
      packages/gui/src/view/pages/server.vue
  6. 5
      packages/mitmproxy/src/lib/proxy/mitmproxy/createRequestHandler.js

2
README.md

@ -305,7 +305,7 @@ npm run electron
### 打包成可执行文件
```shell
cd packages/gui
# 先执行上面的步骤,然后运行如下命令打包成可执行文件
npm run electron:build
```

9
doc/caroot.md

@ -39,16 +39,17 @@ DevSidecar在第一次启动时会在本地随机生成一份根证书,当有
## 二、信任根证书有安全风险吗
1. 根证书是DevSidecar第一次启动时本地随机生成的,除了你这台电脑没人知道这份根证书的内容。
2. 代理请求目标网站时会校验目标网站的证书(除非关闭了NODE_TLS_REJECT_UNAUTHORIZED)。
2. 代理请求目标网站时会校验目标网站的证书(除非关闭了`代理校验ssl`)。
> 综上所述,信任根证书没有问题。
最大的风险在于应用来源以及拦截配置里的替代网站。
> 所以信任根证书没有问题。
> 但如果应用本身来源不明,或者`拦截配置`里的替代网站作恶,则有安全风险。
> 对于应用来源风险:
> 请勿从未知网站下载DevSidecar应用,认准官方版本发布地址
> [Gitee Release](https://gitee.com/docmirror/dev-sidecar/releases)
> [Github Release](https://github.com/docmirror/dev-sidecar/releases)
>
> 或者从源码自行编译安装
> 对于拦截配置里的替代网站风险:
> 1. 尽量缩小替代配置的范围

1
packages/core/src/config/index.js

@ -25,6 +25,7 @@ module.exports = {
port: 1181,
setting: {
NODE_TLS_REJECT_UNAUTHORIZED: true,
verifySsl: true,
script: {
enabled: true,
defaultDir: './extra/scripts/'

5
packages/gui/src/view/components/setup-ca.vue

@ -13,9 +13,11 @@
<template slot="title">
{{title}}
<a-button type="primary" style="float:right" @click="doSetup()">点此去安装</a-button>
<a-button style="float:right;margin-right:10px;" @click="openExternal('https://gitee.com/docmirror/dev-sidecar/blob/master/doc/caroot.md')">为什么</a-button>
</template>
<div>
<b>本应用在非安全模式下必须安装和信任CA根证书</b>该证书是应用启动时本地随机生成的<br/>
<template v-if="this.systemPlatform === 'mac'">
1点击右上角点此去安装按钮打开钥匙串<br/>
2然后按如下图步骤将随机生成的根证书设置为始终信任<br/>
@ -70,6 +72,9 @@ export default {
}
},
methods: {
openExternal (url) {
this.$api.ipc.openExternal(url)
},
afterVisibleChange (val) {
},
showDrawer () {

10
packages/gui/src/view/pages/server.vue

@ -32,11 +32,17 @@
<a-input v-model="config.server.port"/>
<div class="form-help">修改后需要重启应用</div>
</a-form-item>
<a-form-item label="校验SSL" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-form-item label="全局校验SSL" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-checkbox v-model="config.server.setting.NODE_TLS_REJECT_UNAUTHORIZED">
NODE_TLS_REJECT_UNAUTHORIZED
</a-checkbox>
<div class="form-help">开启此项之后被代理应用关闭SSL校验也问题不大了</div>
<div class="form-help">高风险操作没有特殊情况请勿关闭</div>
</a-form-item>
<a-form-item label="代理校验SSL" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-checkbox v-model="config.server.setting.verifySsl">
校验加速目标网站的ssl证书
</a-checkbox>
<div class="form-help">如果目标网站证书有问题但你想强行访问可以临时关闭此项</div>
</a-form-item>
<a-form-item label="根证书:" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-input-search addon-before="Cert" enter-button="选择" @search="onCrtSelect"

5
packages/mitmproxy/src/lib/proxy/mitmproxy/createRequestHandler.js

@ -16,9 +16,8 @@ module.exports = function createRequestHandler (createIntercepts, middlewares, e
let proxyReq
const rOptions = commonUtil.getOptionsFormRequest(req, ssl, externalProxy)
if (setting && setting.NODE_TLS_REJECT_UNAUTHORIZED) {
rOptions.agent.options.rejectUnauthorized = true
}
rOptions.agent.options.rejectUnauthorized = setting.verifySsl
if (rOptions.headers.connection === 'close') {
req.socket.setKeepAlive(false)

Loading…
Cancel
Save