【控制篇 / 策略】(5.4) ❀ 03. Explicit Web Proxy 显式web代理 ❀ FortiGate 防火墙

        【简介】提供代理服务的计算机或其它类型的网络节点称为代理服务器,其具体过程为:客户端首先与代理服务器创建连接,接着发出一个对另外的目标服务器的文件或其它资源的连接请求,代理服务器通过与目标服务器连接或从缓存中取得请求的资源,并返回给客户端。通常在这个过程中,代理服务器可能改变客户端请求或服务器端响应的一些内容以满足各种代理需要。


  显式代理

        飞塔防火墙支持支持在一个或者多个物理接口上启用HTTP或HTTPS代理,显式的web代理支持通过web浏览器或PAC(Proxy auto-config)为web代理用户提供自动代理配置及FTP会话代理。

  启用显式代理

        默认情况下显式代理功能是关闭的,需要开启后才能使用。

        ① 选择菜单【系统管理】-【功能选择】,在安全功能选择里打开【显示代理】开关,点击【应用】。

  配置显式代理

        开启显式代理功能后,在菜单就会出现显式代理设置选项了。

        ① 首先需要在防火墙的物理接口启用代理,选择菜单【网络】-【接口】, 选择内网接口internal,点击【编辑】。

        ② 拉到最下方,点击打开启用显示WEB代理,点击【确认】。

        ③ 然后需要启用显示代理,选择菜单【网络】-【显示代理】,有两类代理可以启用,这里启用Web代理。

        ④ 监听接口出现了刚才打开过Web代理的internal接口,默认的http端口是8080,直接点击【应用】就可以了。

  配置策略

        显示代理拥有独立的策略。

        ① 选择菜单【策略&对象】-【显示代理策略】,点击【新建】。

        ② 策略里设置允许internal接口走wan1口代理上网。显示web代理不支持SSL、IPsec流量,也无法支持流量整形功能。

        ③ 新建的策略里可以看到没有流量。

        ④ IPv4策略里已经有一条默认策略指定internal走Wan1口上网,需要建一条新的策略,关闭走IPv4策略的http上网。选择菜单【策略&对象】-【IPv4策略】,点击【新建】。

        ⑤ 策略内容是禁止internal走wan1用http和https访问web网站。

        ⑥ 新建的禁止策略会在默认的策略下方,根据策略执行顺序,禁止策略是不起作用的。鼠标按住禁止策略的序号2,向上拖动鼠标,可以调整两条策略的顺序。

        ⑦ 修改顺序后,禁止策略在上方,这样http和https都会被禁用,但其它服务仍然可以使用。例如QQ等,还是通过网关到互联网。

  客户端设置

        浏览器默认还是走网关上网的,并没有走web代理。

        ① 打开IE浏览器,会发现由于走路由的http和https已经禁止了,点击右上角齿轮图标,弹出下拉菜单选择【Internet选项】。

        ② 打开连接子菜单,点击【局域网设置】。

        ③ 启用代理服务器,地址输入internal接口的IP地址,端口为8080,点击【确定】。

  效果测试

        IE设置完成后,就可以测试是否能通过web代理上网了。

        ① 打开百度网站,刚才还不能打开的,现在正常了。

        ② 再次通过浏览器打开防火墙的登录地址,却发现打不开了。这是因为开启代理之后,所有的HTTP流量将通过web代理访问,无论内网或者外网,而其它非HTTP流量,如telnet、smtp等则使用本地路由进行转发。

        ③ 关闭浏览器的web代理,登录防火墙,查看显式代理策略,现在有流量数据了,说明刚才浏览器是走显示代理上网的。

飞塔技术-老梅子   QQ:57389522


<think>我们正在解决Gradle构建时由于使用HTTP协议(不安全协议)访问Maven仓库导致的依赖解析失败问题。错误信息通常为: > Could not resolve all dependencies for configuration ':classpath'. > Using insecure protocols with repositories, without explicit opt-in, is unsupported. 根据引用[1][2][3][4]中的描述,这个问题在Gradle 7.0及以上版本中被引入,因为Gradle默认禁止使用不安全的协议(如HTTP)访问仓库,除非允许。 解决方案有两种: 1. 将仓库的URL从HTTP改为HTTPS(如果仓库支持HTTPS)。 2. 如果仓库不支持HTTPS,则需要在仓库配置中允许不安全协议(通过`allowInsecureProtocol = true`)。 下面我们详细说明这两种解决方案。 ### 解决方案1:使用HTTPS协议(推荐) 在项目的`build.gradle`文件中,找到所有使用`http://`的仓库URL,将其替换为`https://`。例如: **修改前(使用HTTP)**: ```groovy repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } // 其他仓库... } ``` **修改后(使用HTTPS)**: ```groovy repositories { maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } // 其他仓库... } ``` 注意:阿里云仓库已经支持HTTPS,所以这个修改是可行的(参考引用[3])。 ### 解决方案2:允许不安全协议(临时方案) 如果某个仓库暂时不支持HTTPS,则可以在该仓库的配置中添加`allowInsecureProtocol = true`。例如: ```groovy repositories { maven { url 'http://insecure.repository.com/repo' allowInsecureProtocol true // 允许不安全协议 } } ``` ### 完整示例 假设你的项目级`build.gradle`文件中有如下配置: ```groovy buildscript { repositories { maven { url 'http://maven.scm.adc.com:8081/nexus/content/groups/stable-public/' } google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:7.0.2" // 其他依赖... } } allprojects { repositories { maven { url 'http://maven.scm.adc.com:8081/nexus/content/groups/stable-public/' } google() mavenCentral() } } ``` 根据错误信息,我们需要将`maven.scm.adc.com`的仓库URL改为HTTPS,或者允许不安全协议。如果该仓库支持HTTPS,则改为`https`;如果不支持,则添加`allowInsecureProtocol`。 **修改后的配置(改为HTTPS)**: ```groovy buildscript { repositories { maven { url 'https://maven.scm.adc.com:8081/nexus/content/groups/stable-public/' } // 改为https google() mavenCentral() } // ... 依赖不变 } allprojects { repositories { maven { url 'https://maven.scm.adc.com:8081/nexus/content/groups/stable-public/' } // 改为https google() mavenCentral() } } ``` **如果该仓库不支持HTTPS,则允许不安全协议**: ```groovy buildscript { repositories { maven { url 'http://maven.scm.adc.com:8081/nexus/content/groups/stable-public/' allowInsecureProtocol true // 允许 } google() mavenCentral() } // ... 依赖不变 } allprojects { repositories { maven { url 'http://maven.scm.adc.com:8081/nexus/content/groups/stable-public/' allowInsecureProtocol true // 允许 } google() mavenCentral() } } ``` ### 验证修复 修改配置后,执行以下命令刷新依赖并重新构建: ```bash ./gradlew clean --refresh-dependencies ./gradlew build ``` ### 注意事项 1. **安全风险**:允许不安全协议(HTTP)会使得依赖下载过程容易被中间人攻击,因此仅建议作为临时解决方案。长期来看,应推动仓库管理员提供HTTPS支持[^4]。 2. **多位置修改**:注意在`buildscript`和`allprojects`中可能都需要修改仓库配置。 ### 根本原因 Gradle 7.0及以上版本默认要求仓库使用安全协议(如HTTPS),以增强构建过程的安全性[^2][^3][^4]。这一变更旨在防止依赖包在传输过程中被篡改。 §§相关问题§§ 1. 如何检查Gradle项目中使用的仓库是否支持HTTPS? 2. 如何全局配置Gradle仓库以避免在每个项目中重复声明? 3. 除了协议安全,Gradle 7.0+还有哪些重要的安全策略变更? [^1]: 构建Gradle项目控制台报错:Could not resolve all dependencies for configuration ‘:testCompileClasspath’ [^2]: Could not resolve all dependencies for configuration ‘:classpath‘. > Using insecure protocols [^3]: 将gradle.build仓库更换为阿里云仓库后报错 [^4]: Gradle配置出错:> Could not resolve all artifacts for configuration ‘:classpath‘. [^5]: Could not resolve all dependencies for configuration ‘:classpath‘.</think>### Gradle项目配置失败:Maven仓库使用不安全协议解决方案 当Gradle构建出现以下错误时: ``` Could not resolve all dependencies for configuration ':classpath' Using insecure protocols with repositories, without explicit opt-in, is unsupported ``` 这表示您的项目使用了HTTP协议访问Maven仓库,而Gradle 7.0+版本默认禁止这种不安全连接。以下是完整解决方案: --- ### 解决方案分步指南 #### 1. **首选方案:升级为HTTPS协议(推荐)** 在`build.gradle`文件中修改仓库URL协议: ```groovy // 项目级 build.gradle buildscript { repositories { // 修改前: http://maven.scm.adc.com:8081/... maven { url "https://maven.scm.adc.com:8081/nexus/content/groups/stable-public/" } google() mavenCentral() } } allprojects { repositories { // 同样修改子项目仓库 maven { url "https://maven.scm.adc.com:8081/nexus/content/groups/stable-public/" } google() mavenCentral() } } ``` **优势**:HTTPS提供加密传输,防止依赖包被篡改[^2]。 #### 2. **临时方案:允许不安全协议** 如果仓库不支持HTTPS,添加`allowInsecureProtocol`参数: ```groovy maven { url "http://maven.scm.adc.com:8081/nexus/content/groups/stable-public/" allowInsecureProtocol = true // 允许HTTP } ``` **风险提示**:此方法应仅作为临时措施,长期使用存在安全风险较高[^4]。 #### 3. **阿里云仓库特殊处理** 如果使用阿里云仓库,确保使用正确的HTTPS地址: ```groovy maven { url "https://maven.aliyun.com/repository/public" // 不是 http://maven.aliyun.com/nexus/content/groups/public/ } ``` 阿里云旧版HTTP地址会触发此错误[^3]。 --- ### 完整配置示例 ```groovy // build.gradle (项目级) buildscript { repositories { // 安全仓库 maven { url "https://maven.scm.adc.com:8081/..." } maven { url "https://maven.aliyun.com/repository/public" } google() mavenCentral() // 特殊仓库(必须HTTP时) maven { url "http://custom.insecure-repo.com" allowInsecureProtocol true // 声明 } } dependencies { classpath "com.android.tools.build:gradle:7.0.2" } } allprojects { repositories { // 同样配置应用到所有子项目 } } ``` --- ### 验证修复 1. 清理并刷新依赖: ```bash ./gradlew clean --refresh-dependencies ``` 2. 重新构建项目: ```bash ./gradlew assembleDebug ``` --- ### 根本原因分析 - **安全策略变更**:Gradle 7.0+默认禁止HTTP协议访问仓库,防止中间人攻击[^2][^4] - **影响范围**:所有使用`http://`的仓库声明(包括`buildscript`和`allprojects`) - **错误定位**:Gradle会明确指示问题仓库名称(如`maven2(http://...)`)[^2][^4] > **最佳实践**:优先联系仓库管理员升级HTTPS支持,次选方案才是临时允许不安全协议[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞塔老梅子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值