无法配置 Docker 在 Catalina 上使用 Burp Suite 代理
Can't configure Docker to use Burp Suite proxy on Catalina
我正在尝试将 Docker 与具有自己的 CA 证书的代理服务器一起使用。如果不在每个容器上安装证书,我无法弄清楚如何为我的用户下的所有容器 运行ning 配置代理。如有任何帮助,我们将不胜感激!
我正在 Docker Desktop Docker 版本 19.03.13,内部版本 4484c46d9d,在 OS X Catalina 10.15.4 上。 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 容器,其中大部分都针对多个开发环境进行了标准化,并且不想在只有我的机器需要时修改每个 Docker 文件。
这是我的 ~/.docker/config.json
文件的相关部分:
{
"proxies": {
"default": {
"httpProxy": "http://127.0.0.1:8080",
"httpsProxy": "https://127.0.0.1:8080"
}
}
}
这是我的Docker文件:
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
我刚开始创建自己的 Docker 文件和配置,所以如果这是非常基础的,我很抱歉 - 我已经搜索了几个小时,但没有找到任何有用的信息。
当你 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
我正在尝试将 Docker 与具有自己的 CA 证书的代理服务器一起使用。如果不在每个容器上安装证书,我无法弄清楚如何为我的用户下的所有容器 运行ning 配置代理。如有任何帮助,我们将不胜感激!
我正在 Docker Desktop Docker 版本 19.03.13,内部版本 4484c46d9d,在 OS X Catalina 10.15.4 上。 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 容器,其中大部分都针对多个开发环境进行了标准化,并且不想在只有我的机器需要时修改每个 Docker 文件。
这是我的 ~/.docker/config.json
文件的相关部分:
{
"proxies": {
"default": {
"httpProxy": "http://127.0.0.1:8080",
"httpsProxy": "https://127.0.0.1:8080"
}
}
}
这是我的Docker文件:
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
我刚开始创建自己的 Docker 文件和配置,所以如果这是非常基础的,我很抱歉 - 我已经搜索了几个小时,但没有找到任何有用的信息。
当你 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