无法将Docker配置为在Catalina上使用Burp Suite代理

如何解决无法将Docker配置为在Catalina上使用Burp Suite代理

我正在尝试将Docker与具有自己的CA证书的代理服务器一起使用。我无法弄清楚如何为在我的用户下运行的所有容器配置代理,而不在每个容器上都安装证书。任何帮助,将不胜感激!

我在OS X Catalina 10.15.4上使用Docker桌面Docker版本19.03.13,内部版本4484c46d9d。 Burp Suite代理我计算机上的所有HTTP请求。我的OS X登录和系统钥匙串中安装了Burp Suite CA证书。当我在~/.docker/config.json文件中配置代理时,它指向正确的代理,但出现错误

Errno::ECONNREFUSED: Failed to open TCP connection to 127.0.0.1:8080

当我直接在Docker容器中安装Burp Suite证书时,我可以代理请求而无需其他配置(包括环境变量或config.json更改)。但是,我运行了许多Docker容器,其中大多数已针对多个开发环境进行了标准化,并且当我的机器需要此文件时,不想修改每个Dockerfile。

这是我的~/.docker/config.json文件的相关部分:

{
  "proxies": {
    "default": {
      "httpProxy": "http://127.0.0.1:8080","httpsProxy": "https://127.0.0.1:8080"
    }
  }
}

这是我的Dockerfile:

FROM ruby:2
RUN gem install ronin-support
copY rails_rce.rb .

最后,这是我运行docker build .时的总输出

Sending build context to Docker daemon  11.26kB
Step 1/3 : FROM ruby:2
 ---> 343d2dc24f38
Step 2/3 : RUN gem install ronin-support
 ---> Running in 150bf40c6ad8
ERROR:  Could not find a valid gem 'ronin-support' (>= 0),here is why:
          Unable to download data from https://rubygems.org/ - Errno::ECONNREFUSED: Failed to open TCP connection to 127.0.0.1:8080 (Connection refused - connect(2) for "127.0.0.1" port 8080) (https://rubygems.org/specs.4.8.gz)
The command '/bin/sh -c gem install ronin-support' returned a non-zero code: 2

我对创建自己的Dockerfile和配置是不熟悉的,因此,如果这是非常基础的内容,我感到抱歉-我已经搜索了数小时,没有任何帮助。

解决方法

need to connect from the container to the host on Mac也是一样。

您应该使用host.docker.internal而不是localhost

因此配置将

{
  "proxies": {
    "default": {
      "httpProxy": "http://host.docker.internal:8080","httpsProxy": "http://host.docker.internal:8080"
    }
  }
}

此外,您需要将BurpSuite CA添加到您的容器中。

首先,将其转换为PEM。

openssl x509 -inform der -in cacert.der  -out burp_cert.crt

然后使用Dockerfile将一个添加到容器中的受信任CA

FROM ruby:2
COPY burp_cert.crt /usr/local/share/ca-certificates/burp.crt 
RUN update-ca-certificates
RUN gem install ronin-support
COPY rails_rce.rb 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?