{"id":35,"date":"2012-05-21T20:42:22","date_gmt":"2012-05-21T18:42:22","guid":{"rendered":"http:\/\/eibo.eu\/?p=35"},"modified":"2012-05-23T15:10:06","modified_gmt":"2012-05-23T13:10:06","slug":"android-404-und-strongswan-mit-x509-zertifikaten-uber-xauth-rsa","status":"publish","type":"post","link":"https:\/\/eibo.eu\/?p=35","title":{"rendered":"Android 4.0.4 und Strongswan mit x509 Zertifikaten \u00fcber XAUTH RSA"},"content":{"rendered":"<p>Nachdem ich mein HTC Desire Z auf Android 4 ICS umgestellt habe, sollte IPSec nun endlich gehen.<\/p>\n<p>Auf dem Telefon (CyanogenMod 9.0.0-RC0 BETA 5):<\/p>\n<p>Ein Zertifikat in pkcs12-Format erstellen, wie findet man an vielen Stellen. Dieses zusammen mit dem ins pcks12-Format umgewandelte CA-Zertifikat auf die SD-Karte \u00fcberspielen und in Einstellungen-&gt;Sicherheit-&gt;Von SD-Karte installieren auf das Telefon \u00fcbertragen. Die Zertifikate werden dabei auf der SD-Karte gel\u00f6scht.<\/p>\n<p>In Einstellungen-&gt;Mehr&#8230;-&gt;VPN-&gt;VPN hinzuf\u00fcgen. Hier ist der Name nach Wunsch festzulegen, der Typ ist \u00bbIPSec Xauth RSA\u00ab, das IPSec-Nutzerzertifikat ist das eben eingelesene Zertifikat, IPSec-CA-Zertifikat und IPSec-Serverzertifikat bleiben leer! Sonst kommt es zu einem Fehler, es tauchen Pakete auf Port 4500 auf, die mit tcpdump gesehen werden k\u00f6nnen, die aber von strongswan nicht verarbeitet werden.<\/p>\n<p>Auf dem Server (Debian Squeeze, Kernel 2.6.39 mit Strongswan 4.5.2 aus den Backports):<\/p>\n<p>Anders als urspr\u00fcnglich von mir angenommen, ist der Inhalt von\u00a0 \/proc\/sys\/net\/ipv4\/conf\/ppp0\/rp_filter anscheinend egal, ich h\u00e4tte gedacht, er m\u00fcsse 0 sein. Relevant ist aber nat\u00fcrlich \/proc\/sys\/net\/ipv4\/ip_forward, was auf 1 stehen muss.<br \/>\nAu\u00dferdem muss nat\u00fcrlich port 500 und udp port 4500 von der Firewall durchgelassen werden, ebenso Fragmente, dies ist aber auf Gateways f\u00fcr IPSec meist ohnehin der Fall. Wichtig ist aber, da die normale Android IPSec Implementation keinen geteilten Tunnel erlaubt, sicherzustellen, dass Datenverkehr vom Handy durch das Gateway ins Internet geleitet wird (und zur\u00fcck), bei mir so gel\u00f6st:<br \/>\n<code><br \/>\niptables -A FORWARD -i eth0 -o ppp0 -m mark --mark 50 -j ACCEPT # Weiterleiten in per IPSec angeschlossene Netze<br \/>\niptables -A FORWARD -i ppp0 -o eth0 -m mark --mark 50 -j ACCEPT # dito, andere Richtung<br \/>\n<strong>iptables -A FORWARD -i ppp0 -d 192.168.99.0\/24 -j ACCEPT  # Weiterleiten der Antworten aus dem Netz zum Handy<br \/>\n<\/strong>iptables -t mangle -A PREROUTING -i ppp0 -p esp -j MARK --set-mark 50  # Verhindern des doppelten Masqueradings<br \/>\niptables -t mangle -A PREROUTING -i ppp0 -p udp --dport 4500 -j MARK --set-mark 50 # dito<br \/>\niptables -t mangle -A PREROUTING -d 192.168.0.0\/16 -j MARK --set-mark 50 # dito<br \/>\niptables -t nat -A POSTROUTING -o ppp0 -s 192.168.199.0\/24 -d 192.168.0.0\/16 -j ACCEPT # Akzeptieren von Transport in per IPSec angeschlossene Netze<br \/>\n<strong>iptables -t nat -A POSTROUTING -s 192.168.99.0\/24 -o ppp0 -j MASQUERADE # Masquerading von Paketen vom Handy ins Internet, wegen mark=50 aus PREROUTING<br \/>\n<\/strong>iptables -t nat -A POSTROUTING -o ppp0 -m mark --mark 50 -j ACCEPT # Verhindern des doppelten Masqueradings<br \/>\niptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # Masquerade aller Pakete, die nicht vorher in POSTROUTING behandelt wurden<br \/>\n<\/code><\/p>\n<p>Die Strongswan Konfiguration ben\u00f6tigt auf jeden Fall die Zeile <strong>leftsendcert=always<\/strong>, ohne diese kommt es zu einem Fehler:<br \/>\n<code><br \/>\npacket from 80.186.112.96:59330: Main Mode message is part of an unknown exchange<br \/>\n<\/code><br \/>\nDie leftid und rightid m\u00fcssen nat\u00fcrlich entsprechend den eigenen Zertifikaten eingetragen sein. Weiterhin ist dies mit IKEv1, also pluto realisiert, ob dies auch mit charon und IKEv2 geht, wei\u00df ich momentan noch nicht. Auch wei\u00df ich noch nicht, wie ich es mit laufendem charon zum laufen bekomme. Wichtig ist mir aber, dass IPSec mit Zertifikaten auf meinem Handy nun endlich geht.<\/p>\n<pre><code>\r\n\r\nconfig setup\r\n\r\n\u00a0  # klipsdebug=all\r\n\r\n\u00a0  # plutodebug=control\r\n\r\n\u00a0  plutostart=yes\r\n\r\n\u00a0  charonstart=no\r\n\r\n\u00a0  nat_traversal=yesconn %default\r\n\r\n\u00a0  keyingtries=2\r\n\r\n\u00a0  compress=yes\r\n\r\n\u00a0  pfs=yes\r\n\r\n<\/code><code>conn htc-eibo\r\n\r\n\u00a0  keyexchange=ikev1\r\n\r\n\u00a0  type=tunnel\r\n\r\n\u00a0  pfs=no\r\n\r\n\u00a0  xauth=server\r\n\r\n\u00a0  authby=xauthrsasig\r\n\r\n\u00a0  left=%defaultroute\r\n\r\n\u00a0  leftrsasigkey=%cert\r\n\r\n\u00a0  leftid=\"C=DE, L=Hamburg, O=Eibo Thieme, OU=gateway\"\r\n\r\n\u00a0  leftcert=eibo.pem\r\n\r\n\u00a0  leftsendcert=always\r\n\r\n\u00a0  leftsubnet=0.0.0.0\/0\r\n\r\n\u00a0  right=%any\r\n\r\n\u00a0  rightrsasigkey=%cert\r\n\r\n\u00a0  rightid=\"C=DE, L=Hamburg, O=Eibo Thieme, OU=htc\"\r\n\r\n\u00a0  rightsourceip=192.168.99.1\/32\r\n\r\n\u00a0  auto=add\r\n\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem ich mein HTC Desire Z auf Android 4 ICS umgestellt habe, sollte IPSec nun endlich gehen. Auf dem Telefon (CyanogenMod 9.0.0-RC0 BETA 5): Ein Zertifikat in pkcs12-Format erstellen, wie findet man an vielen Stellen. Dieses zusammen mit dem ins pcks12-Format umgewandelte CA-Zertifikat auf die SD-Karte \u00fcberspielen und in Einstellungen-&gt;Sicherheit-&gt;Von SD-Karte installieren auf das Telefon [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,17],"tags":[],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-android","category-ipsec"],"_links":{"self":[{"href":"https:\/\/eibo.eu\/index.php?rest_route=\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eibo.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eibo.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eibo.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eibo.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=35"}],"version-history":[{"count":0,"href":"https:\/\/eibo.eu\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions"}],"wp:attachment":[{"href":"https:\/\/eibo.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eibo.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eibo.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}