2017-05-08 2 views
2

Ich habe eine Anwendung, die eine Anfrage an einen Web-Service sendet. Leider ist die Anwendung kompiliert und die Verbindung zum Webdienst ist in der Anwendung als http eingebettet. (Ja ich weiß, wie dumm das ist, ich habe es nicht geschrieben)Gibt es eine Möglichkeit, eine Anwendung zu zwingen, die Verwendung von https anstelle von http

Vor kurzem erlaubt die 3rd Party Company nicht mehr HTTP-Anfragen, alles muss https sein.

Die Anwendung läuft als Webapp auf Tomcat. Der Server ist ein Windows-Server.

Gibt es eine Möglichkeit, den Aufruf dieses Webdienstes abzufangen und die Verwendung von https zu erzwingen?

Antwort

0

Sie könnten ein Proxy-Skript verwenden. Schreiben Sie sie in eine beliebige serverseitige Sprache, z. B. PHP, legen Sie die API-URL für dieses Skript fest, das Skript führt die https-Anforderung für Sie aus und gibt die Ergebnisse an Ihre App zurück.

Sie könnten auch Apache selbst als Proxy verwenden und so etwas wie: Apache config: how to proxypass http requests to https

1

Da Sie nicht den Quellcode der Anwendung ändern kann (wie es kompiliert wird), und Sie können den Web-Service nicht ändern (wie es 3rd Party ist), der einzige Weg, um dieses Problem zu lösen ist ein Proxy zwischen der Anwendung und Web-Service. Um das zu tun, müssen Sie (der Proxy übernehmen wird in localhost läuft):

  1. Da die Web-Service-URL in die kompilierte Anwendung eingebettet ist, um zu lassen Anwendung HTTP-Anfrage an unseren Proxy senden, Gastgeber Mapping Notwendigkeit ändern (z. B. /etc/hosts), um DNS zu überschreiben. Wenn die HTTP-Anforderung in der Anwendung beispielsweise GET http://example.com/api/sample lautet, muss /etc/hostsexample.com auf 127.0.0.1 abgebildet werden.
  2. Erstellen Sie einen Proxy-Webserver in localhost und öffnen Sie den gleichen Port wie den Webdienst. Dieser Proxy ist ein sehr einfacher Webserver (jede Backend-Programmierung kann dies tun), er ist nur für die Weiterleitung von Anfragen zuständig. Auf diese Weise sendet die Anwendung beim Senden einer HTTP-Anforderung an example.com die Anforderung an den Proxyserver.
  3. Nach dem Empfang der HTTP-Anforderung von der Anwendung extrahiert der Proxy-Server die Anforderungs-URL/den Header/Body und sendet die HTTPS-Anforderung an die echte IP-Adresse example.com. Bitte beachten Sie: In dieser HTTPS-Anfrage sollte eine Kopfzeile host mit dem Wert example.com hinzugefügt werden. Der Webdienst von Drittanbietern kann diese Kopfzeile überprüfen.
  4. Nachdem die echte Antwort von example.com zurückgegeben wird, wird Proxy es an die Anwendung zurückgeben.

Natürlich können Sie auch Reverse Engineering (Java Decompiler) verwenden die Anwendung des „Quellcode“ zu bekommen, die URL Web-Service ändern und dann kompilieren wieder auf eine Webapp. Da die Anwendung jedoch möglicherweise aktualisiert/aktualisiert werden muss und möglicherweise nicht unter Ihrer Kontrolle steht, wird diese Reverse-Engineering-Methode nicht empfohlen.

Verwandte Themen