0

Ich versuche, eine Anwendung mit Google App Engine zu erstellen. Ein Teil der Funktionalität erfordert, dass ich Kalenderdaten von einem Drittanbieterserver über http abrufen muss. Es ist wichtig zu beachten, dass der Server, mit dem ich mich verbinde, SSL nicht verwendet. Die Ziel-URL enthält also nur "http: //".SSLHandshakeException beim Ausstellen der HTTP-Anfrage auf dem Google App Engine-Testserver (Java)

Wie auch immer, ich schrieb etwas Code in einer normalen Java-Anwendung als ein Beweis für das Konzept.

try { 

     // Create url 
     URL targetUrl = new URL(target); 

     // Open the connection 
     URLConnection connection = targetUrl.openConnection(); 

     // Create InputStream 
     InputStream inStream = connection.getInputStream(); 

     // Parse calendar data using iCal4j 
     CalendarBuilder builder = new CalendarBuilder(); 
     theCalendar = builder.build(inStream); 

     // Close the connection 
     inStream.close(); 

    } catch(IOException e) { 
     e.printStackTrace(); 
    } catch (ParserException e) { 
     e.printStackTrace(); 
    } 

Also ich lief diesen Code in der Java-Anwendung und es funktionierte wie ein Charme. Nachdem ich gesehen hatte, dass es funktionierte, beschloss ich, den gleichen Code in ein Test-Servlet zu implementieren, das ich in meinem Google App Engine-Projekt erstellt hatte. Doch bei so dass es auszuführen, bekomme ich diesen Fehler:

javax.net.ssl.SSLHandshakeException: Could not verify SSL certificate for URL: http://the_url 
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationException(URLFetchServiceImpl.java:175) 
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:45) 
at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.fetchResponse(URLFetchServiceStreamHandler.java:543) 
at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getInputStream(URLFetchServiceStreamHandler.java:422) 
at java.net.URL.openStream(URL.java:1037) 
at com.amftech.website.CalendarServlet.doGet(CalendarServlet.java:36) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:134) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:95) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:508) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:326) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

Ich habe auch bemerkt, dass der Server beim Abschuss wurden folgende Warnungen ausgegeben:

Jun 12, 2017 2:43:14 PM com.google.appengine.repackaged.com.google.protobuf.UnsafeUtil supportsUnsafeByteBufferOperations 
WARNING: platform method missing - proto runtime falling back to safer methods: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.misc") 
Jun 12, 2017 2:43:14 PM com.google.appengine.repackaged.com.google.protobuf.UnsafeUtil supportsUnsafeArrayOperations 
WARNING: platform method missing - proto runtime falling back to safer methods: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.misc") 
Jun 12, 2017 2:43:14 PM com.google.appengine.repackaged.com.google.protobuf.UnsafeUtil supportsUnsafeCopyMemory 
WARNING: copyMemory is missing from platform - proto runtime falling back to safer methods. 

Ich weiß nicht, ob diese Warnungen alles bedeuten, aber ich dachte, sie könnten. Gibt es ein Problem bei der Einrichtung meines Testservers? Mein Projekt-Setup? Ich habe das gesamte Internet durchsucht und nichts gefunden, außer "vergewissere dich, dass du das Zertifikat heruntergeladen hast". Aber der Server, mit dem ich mich verbinde, benutzt nicht einmal SSL, also warum beschwert er sich über einen SSL-Handshake?

Antwort

0

Ok, ich bin mir nicht sicher, was los ist, aber ich denke, mein Setup wurde irgendwie durcheinander gebracht. Ich konnte dieses Problem beheben, indem ich Eclipse löschte, das Google Cloud SDK deinstallierte, Java deinstallierte, meinen Arbeitsbereich in Eclipse zurücksetzte und alles neu installierte und neu konfigurierte. Ich hoffe also, ich könnte jemandem mit dem gleichen Problem helfen!

Verwandte Themen