ขอบคุณบ๊อบที่ชี้ให้ฉันไปในทิศทางที่ถูกต้อง บางครั้งสิ่งต่างๆ ก็เป็นเพียงการค้นหาโดย Google เมื่อคุณรู้ว่าต้องค้นหาอะไร
@บ๊อบ แสดงความคิดเห็น:
วิธีทั่วไปในการเรียกใช้พร็อกซีสำหรับแอปพลิเคชันที่ไม่ใช้การตั้งค่าพร็อกซีคือการใช้กฎไฟร์วอลล์เพื่อเขียนทราฟฟิกขาออกทั้งหมดใหม่โดยมีเว็บพอร์ตเป็นปลายทางไปยังพร็อกซีแบบโปร่งใส ค่อนข้างเล็กน้อยสำหรับ http ธรรมดา แต่เกี่ยวข้องมากกว่าเล็กน้อยเมื่อเกี่ยวข้องกับ https
แทนที่จะตั้งค่าพร็อกซีในการตั้งค่าพร็อกซีของ OS เราสามารถกำหนดค่า iptables ให้กำหนดเส้นทางทุกอย่างบนพอร์ต 80 และ 443 ไปยังพร็อกซีของเรา (ขั้นตอนนำมาจาก docs.mitmproxy.org)
เปิดใช้งานการส่งต่อ IP และปิดใช้งานการเปลี่ยนเส้นทาง 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
ข้ามขั้นตอนที่ 3 และ 4 ของคู่มือ เนื่องจากเราต้องการเปลี่ยนเส้นทางการรับส่งข้อมูลที่มาจากเครื่องเอง
ในการดำเนินการนี้ ให้สร้างผู้ใช้เพื่อเรียกใช้ mitmproxy เพื่อกำหนดเส้นทางการรับส่งข้อมูลไปที่:
sudo useradd -- สร้างบ้าน mitmproxyuser
sudo -u mitmproxyuser -H bash -c 'cd ~ && pip install --user mitmproxy'
และสุดท้าย กฎ iptables (พร็อกซีที่ทำงานบนพอร์ต 8080):
sudo iptables -t nat -A OUTPUT -p tcp -m เจ้าของ ! --uid-เจ้าของ mitmproxyuser --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A OUTPUT -p tcp -m เจ้าของ ! --uid-เจ้าของ mitmproxyuser --dport 443 -j REDIRECT --to-port 8080
sudo ip6tables -t nat -A OUTPUT -p tcp -m เจ้าของ ! --uid-เจ้าของ mitmproxyuser --dport 80 -j REDIRECT --to-port 8080
sudo ip6tables -t nat -A OUTPUT -p tcp -m เจ้าของ ! --uid-เจ้าของ mitmproxyuser --dport 443 -j REDIRECT --to-port 8080
สุดท้ายให้เรียกใช้ mitmproxy ในฐานะผู้ใช้ใหม่:
sudo -u mitmproxyuser -H bash -c 'mitmproxy --mode โปร่งใส --showhost --set block_global=false'
นั่นคือเท่าที่คู่มือให้โดย mitmproxy ณ จุดนี้ เราทำการตั้งค่าเสร็จแล้ว แต่เราต้องติดตั้งใบรับรองใหม่ (ใบรับรองก่อนหน้านี้จาก mitm.it จะไม่ทำงาน).
หลังจากการเรียกใช้ครั้งแรก ใบรับรองใหม่จะถูกสร้างขึ้นที่ /home/mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.pem. เราจำเป็นต้องแปลงเป็น crt และติดตั้ง:
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-ใบรับรอง
ณ จุดนี้ คุณเกือบจะพร้อม ยกเว้นว่า Apache2/PHP ยังคงไม่เชื่อถือใบรับรองพร็อกซีของเรา ดังนั้นคำขอภายนอกจะไม่ผ่าน ฉันลองการกำหนดค่า SSL ของ apache.conf ที่ไม่ได้ผล ปรากฎว่าฉันต้องยกเลิกการแสดงความคิดเห็นในบรรทัดต่อไปนี้ /etc/php/7.4/apache2/php.ini และเชื่อมโยงไปยังไฟล์ crt ที่เราสร้างขึ้น:
opensl.cafile=/home/mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.crt
อย่าลืมรีสตาร์ท apache2/php7.4-fpm เท่านี้ก็เรียบร้อย! แอพ PHP ของเราถูกกำหนดเส้นทางผ่านพร็อกซีแล้ว นอกจากนี้ คุณยังอาจต้องเชื่อถือไฟล์ crt ที่สร้างขึ้นในเบราว์เซอร์ของคุณเพื่อกำจัดคำเตือนตามปกติ