问题:
$ curl https://github.com/
curl: (60) SSL certificate problem: self signed certificate in certificate chain
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
背景:
我的机器在我公司的本地内网中,一些网站被我们公司的 MITM 代理拦截。
我知道在将该证书导出到文件后,我需要将该证书标记为受信任。我正在尝试使这个过程自动化,这样每当我支持公司的 MITM 代理时,我就可以让我的生活变得更轻松一些。
尝试用谷歌搜索这个主题很困难,并且主要产生了有关如何信任您已经下载的证书的结果,但这不是我在这种情况下需要的。如何下载我公司的 MITM 代理的自签名证书?
家庭作业:
这个问题与以下问题不同,因为,
- 如何在 cURL 命令行中信任自签名证书?,它正在使用 Let's Encrypt 建议询问 foo.localhost 的自签名证书。
- 从服务器获取或卷曲自签名证书,因为它要求下载公共服务器的公共自签名证书。
问题:
如何下载我公司 MITM 代理的自签名证书?
在我以前的公司被拦截的网站是jsonplaceholder.typicode.com
,所以我使用
openssl s_client -connect jsonplaceholder.typicode.com:443 -showcerts
为 zscaler 收集证书块。然而,通过这种方式收集的证书的有效期很短,稍后会自行过期。
在我现在的公司,被拦截的网站是 github.com。当我这样做时openssl s_client -connect github.com:443
,我会得到:
$ openssl s_client -connect github.com:443
CONNECTED(00000003)
depth=2 C = CA, O = MY_COMPANY, CN = MY_COMPANY Root CA
verify error:num=19:self signed certificate in certificate chain
. . .
-----END CERTIFICATE-----
subject=C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = github.com
issuer=C = CA, ST = British Columbia, L = xxx, O = MY_COMPANY, CN = theissuer.my_company.com
但是我无法使用theissuer.my_company.com
我公司的 MITM 代理的自签名证书:
$ openssl s_client -connect theissuer.my_company.com
140082197501248:error:2008F002:BIO routines:BIO_lookup_ex:system lib:../crypto/bio/b_addr.c:730:Name or service not known
connect:errno=22
$ openssl s_client -connect my_company.com
. . .
-----END CERTIFICATE-----
subject=C = CA, ST = British Columbia, L = xxx, O = MY_COMPANY, CN = www.my_company.com
issuer=C = US, O = DigiCert Inc, OU = www.digicert.com, CN = Thawte RSA CA 2018
```
那么,再次,
如何下载我公司 MITM 代理的自签名证书?