安装证书
一、关于证书
只要客户端信任其内置的证书颁发机构,Mitmproxy
即可即时解密加密的流量。通常,这意味着必须在客户端设备上安装mitmproxy CA
证书。
二、快速设置
到目前为止,安装mitmproxy
证书的最简单方法是使用内置的证书安装应用程序。为此,只需启动mitmproxy并使用正确的代理设置配置目标设备。现在启动设备上的浏览器,并访问 mitm.it
。您应该会看到类似以下内容的内容:
单击相关图标,按照所用平台的设置说明进行操作,一切顺利。
三、手动安装mitmproxy CA证书
有时无法选择使用快速安装应用程序-想到Java或iOS Simulator-或出于某些其他原因而只需要手动进行操作即可。以下是一些通用平台的手动证书安装文档的指针列表。mitmproxy CA
证书位于~/.mitmproxymitmproxy
的首次启动后,位于该证书中 。
在命令行上curl:
curl --proxy 127.0.0.1:8080 --cacert ~/.mitmproxy/mitmproxy-ca-cert.pem https://example.com/
- 在命令行上的wget:
wget -e https_proxy=127.0.0.1:8080 --ca-certificate ~/.mitmproxy/mitmproxy-ca-cert.pem https://example.com/
- 苹果系统
- Ubuntu/Debian
- 火狐浏览器
- Linux上的Chrome
- iOS
在最新的iOS版本上,您还需要启用对mitmproxy根证书的完全信任:
- 转到设置>常规>关于>证书信任设置。
- 在“对根证书启用完全信任”下,打开对mitmproxy证书的信任。
sudo keytool -importcert -alias mitmproxy -storepass changeit -keystore $JAVA_HOME/lib/security/cacerts -trustcacerts -file ~/.mitmproxy/mitmproxy-ca-cert.pem
- Android/Android Simulator
- 视窗
- Windows(自动):
certutil -addstore root mitmproxy-ca-cert.cer
四、mitmproxy证书颁发机构
首次运行mitmproxy
或mitmdump
时,将在配置目录中创建mitmproxy
证书颁发机构(CA)(~/.mitmproxy默认)
。该CA用于为客户端访问的每个SSL站点动态生成虚拟证书。由于您的浏览器不信任开箱即用的mitmproxy CA
,因此,每次通过mitmproxy
访问新的SSL域时,您都会看到SSL证书警告。通过浏览器测试单个站点时,仅手动接受伪造的SSL证书并不会带来太多麻烦,但是在许多情况下,您将需要配置测试系统或浏览器以将mitmproxy CA
信任为签名根权限。出于安全原因,mitmproxy CA
会在首次启动时唯一生成,并且不会在不同设备上的mitmproxy
安装之间共享。
五、证书固定
某些应用程序使用证书固定来防止中间人攻击。这意味着如果 不对其进行修改,这些应用程序将不接受mitmproxy
和mitmdump
的证书。建议使用直通功能,以防止mitmproxy和mitmdump
拦截到这些特定域的通信。如果要拦截固定的连接,则需要手动修补应用程序。对于Android
和(越狱)iOS
设备,存在各种工具可以完成此操作。
六、CA和证书文件
由mitmproxy
在.mitmproxy
目录中创建的文件如下:
- mitmproxy PEM格式的证书和私钥。
- mitmproxy-ca-cert.pem PEM格式的证书。使用它可以在大多数非Windows平台上分发。
- mitmproxy-ca-cert.p12 PKCS12格式的证书。用于Windows。
- mitmproxy-ca-cert.cer 与.pem相同的文件,但某些Android设备需要扩展名。
七、使用自定义服务器证书
您可以通过将--cert [domain=]path_to_certificate选项传递给mitmproxy来使用自己的(叶子)证书。然后,Mitmproxy使用提供的证书来拦截指定的域,而不是生成由其自己的CA签名的证书。
证书文件应采用PEM格式。您可以在叶证书的正下方包括中间证书,以便您的PEM文件大致如下所示:
-----BEGIN PRIVATE KEY-----
<private key>
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<cert>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<intermediary cert (optional)>
-----END CERTIFICATE-----
例如,您可以按照以下说明生成此格式的证书:
openssl genrsa -out cert.key 2048
# (Specify the mitm domain as Common Name, e.g. \*.google.com)
openssl req -new -x509 -key cert.key -out cert.crt
cat cert.key cert.crt > cert.pem
现在,您可以使用生成的证书运行mitmproxy
:
对于所有域名
mitmproxy --cert *=cert.pem
对于特定域名
mitmproxy --cert *.example.com=cert.pem
注意: *.example.com
适用于所有子域。您也可以将其 www.example.com
用于特定的子域。
八、使用自定义证书颁发机构
默认情况下,mitmproxy
将~/.mitmproxy/mitmproxy-ca.pem
用作证书颁发机构,以为所有未提供自定义证书的域生成证书(请参见上文)。您可以通过将--set confdir=DIRECTORY
选项传递给mitmproxy
来使用自己的证书颁发机构。然后,Mitmproxy将mitmproxy-ca.pem
在指定目录中查找。如果不存在这样的文件,它将自动生成。
九、使用客户端证书
您可以通过将--set client_certs=DIRECTORY|FILE
选项传递给mitmproxy来使用客户端证书。使用目录允许根据主机名选择证书,而使用文件名允许将单个特定证书用于所有SSL连接。证书文件必须为PEM格式,并且应同时包含未加密的私钥和证书。
十、多个客户证书
您可以将目录指定为--set client_certs=DIRECTORY
,在这种情况下,将按文件名查找匹配的证书。因此,如果您访问example.org,则mitmproxy会example.org.pem
在指定目录中查找名为的文件,并将其用作客户端证书。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论