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

9
doc/caroot.md

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

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

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

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

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

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

@ -32,11 +32,17 @@
<a-input v-model="config.server.port"/> <a-input v-model="config.server.port"/>
<div class="form-help">修改后需要重启应用</div> <div class="form-help">修改后需要重启应用</div>
</a-form-item> </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"> <a-checkbox v-model="config.server.setting.NODE_TLS_REJECT_UNAUTHORIZED">
NODE_TLS_REJECT_UNAUTHORIZED NODE_TLS_REJECT_UNAUTHORIZED
</a-checkbox> </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>
<a-form-item label="根证书:" :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form-item label="根证书:" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-input-search addon-before="Cert" enter-button="选择" @search="onCrtSelect" <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 let proxyReq
const rOptions = commonUtil.getOptionsFormRequest(req, ssl, externalProxy) 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') { if (rOptions.headers.connection === 'close') {
req.socket.setKeepAlive(false) req.socket.setKeepAlive(false)

Loading…
Cancel
Save