【发布时间】:2021-01-04 07:27:30
【问题描述】:
我们在公司 MITM 代理后面有两台 Ubuntu Linux 机器,它重新加密 HTTPS 流量。为了通过这个代理,我们需要将自定义 TLS 证书添加到 Ubuntu 的/etc/ssl/cert/ca-certificates.crt 文件中。
现在,我们的一台机器设置正确,因此它可以访问主机 A。另一台机器无法访问,可能是因为缺少正确的证书。我们想知道哪些证书是“正确的”并将它们添加到另一台机器上。
成功会话的痕迹如下(部分名称和 IP 已更改):
$ curl -L https://A.com -vvvv
* Trying 10.123.89.26...
* TCP_NODELAY set
* Connected to <PROXY> port 3128 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to A.com:443
> CONNECT A.com:443 HTTP/1.1
> Host: A.com:443
> User-Agent: curl/7.58.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs * TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CONNECT phase completed!
* CONNECT phase completed!
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: C=CN; DC=appName gitlab; DC=caName sha256; ST=pkiNo 255088; O=EVILCORP; OU=IT; CN=A.com; emailAddress=admin@admin.com
* start date: Jan 10 09:02:59 2019 GMT
* expire date: Jan 9 09:02:59 2024 GMT
* subjectAltName: host "A.com" matched cert's "A.com"
* issuer: CN=HWIT Enterprise CA 1
* SSL certificate verify ok.
现在,我们还应该收集什么信息才能说,例如,是证书 X 允许我们运行此会话?
X 指的是 ca-certificate.crt 中显示的证书:
-----BEGIN CERTIFICATE-----
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE
AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw
...
...
-----END CERTIFICATE-----
【问题讨论】:
-
我不明白您为什么不对第二台主机执行与第一台主机相同的操作。见https://docs.mitmproxy.org/stable/concepts-certificates/。
-
@PresidentJamesK.Polk 实际上,我们的目标正是让第二台主机像我们的第一台主机一样工作。当然,如果我们可以控制 MITM 配置,那将是微不足道的。不幸的是,我们没有此类信息,只能使用黑盒式网关。
-
另外让我澄清一下,我们是两台主机的用户,而不是管理员。这个问题是关于配置逆向工程的,我认为可以帮助人们更好地理解 TLS 在内部是如何工作的。
-
我曾假设您正在与this 软件产品进行交互,但现在我不太确定。无论如何,下面的答案应该告诉您如何从主机 A 找到您需要的 CA 证书,以便您可以将其添加到主机 B 上的文件中。
标签: ubuntu ssl encryption proxy