SSL/TLS-Verbindungen debuggen
Wenn man externe APIs ansprechen muss, zu denen der Zugang auf eine SSL-Verschlüsselte HTTP-Verbindung reduziert ist, kann man bei Problemen nicht einfach einen Sniffer anwerfen, um den Verkehr zu analysieren, weil dieser verschlüsselt ist. Da das aber manchmal unerlässich ist, bietet es sich an, eine art Proxy zu bauen. Ich habe dazu stunnel verwendet, das im Client-Modus TCP-Verbindungen annimmt und diese über einen SSL-Tunnel weiterleitet. So konnte ich einen zweiten Rechner im Netzwerk als Zieladresse angeben (http://rechner2/…) und die Pakete wurden von dort SSL-verschlüsselt weitergereicht (https://externerrechner/…). Diese Kommunikation konnte ich mit Wireshark belauschen.
Die stunnel-Konfiguration sieht folgendermaßen aus:
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
client = yes
[https]
accept = 80
connect = externerrechner:443
Wenn stunnel gestartet ist, sieht man ein kleines Tray-Icon. Man sollte dann sicher stellen, dass die Windows-Firewall Anfragen vom Entwicklungsrechner nicht verwirft.
Testen kann man den Tunnel ganz einfach, indem man auf dem stunnel-Rechner http://localhost:81 aufruft.