Îi mulțumesc lui Bob că m-a îndreptat în direcția corectă. Uneori lucrurile sunt cu adevărat doar la o căutare pe Google, odată ce știi ce să cauți.
@Bob a comentat:
O modalitate destul de convențională de a rula un proxy pentru aplicațiile care nu respectă setările proxy este de a folosi regulile firewall pentru a rescrie tot traficul de ieșire cu un port web ca destinație pentru un proxy transparent. Destul de banal pentru http simplu, dar puțin mai implicat când este vorba de https.
În loc să setăm proxy-ul în setările proxy ale sistemului de operare, putem configura iptables să direcționeze totul pe portul 80 și 443 către proxy-ul nostru (pașii luați din docs.mitmproxy.org)
Activați redirecționarea IP și dezactivați redirecționările ICMP:
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo sysctl -w net.ipv4.conf.all.send_redirects=0
Omiteți pasii 3 și 4 din manual, deoarece dorim să redirecționăm traficul care provine de la mașină în sine.
Pentru a face acest lucru, creați un utilizator care să ruleze mitmproxy pentru a direcționa traficul către:
sudo useradd --create-home mitmproxyuser
sudo -u mitmproxyuser -H bash -c 'cd ~ && pip install --user mitmproxy'
Și în sfârșit regulile iptables (proxy care rulează pe portul 8080):
sudo iptables -t nat -A OUTPUT -p tcp -m proprietar ! --uid-owner mitmproxyuser --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A OUTPUT -p tcp -m proprietar ! --uid-owner mitmproxyuser --dport 443 -j REDIRECT --to-port 8080
sudo ip6tables -t nat -A OUTPUT -p tcp -m proprietar ! --uid-owner mitmproxyuser --dport 80 -j REDIRECT --to-port 8080
sudo ip6tables -t nat -A OUTPUT -p tcp -m proprietar ! --uid-owner mitmproxyuser --dport 443 -j REDIRECT --to-port 8080
În cele din urmă, rulați mitmproxy ca utilizator nou:
sudo -u mitmproxyuser -H bash -c 'mitmproxy --mode transparent --showhost --set block_global=false'
În ceea ce privește manualul furnizat de mitmproxy. În acest moment, am terminat cu configurarea, dar trebuie să instalăm un nou certificat (orice certificat anterior de la mitm.it nu va funcționa).
După prima rulare, se generează un nou certificat la /home/mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.pem. Trebuie să îl convertim în crt și să îl instalăm:
sudo openssl x509 -in /home/mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.pem -inform PEM -out /home/mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.crt
sudo cp /home/mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.crt /usr/share/ca-certificates/extra/mitmproxy-ca-cert.crt
sudo dpkg-reconfigure ca-certificates
În acest moment, sunteți aproape gata, cu excepția faptului că Apache2/PHP încă nu va avea încredere în certificatul nostru proxy, astfel încât solicitările externe nu vor ajunge. Am încercat o grămadă de configurații SSL apache.conf care nu au funcționat. S-a dovedit că a trebuit să decomentez următorul rând /etc/php/7.4/apache2/php.ini și conectați-l la fișierul crt creat de noi:
openssl.cafile=/home/mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.crt
Nu uitați să reporniți apache2/php7.4-fpm și gata! Aplicația noastră PHP este acum direcționată prin proxy. De asemenea, poate fi necesar să aveți încredere în fișierul crt generat din browser pentru a scăpa de avertismentul obișnuit.