问题描述
我刚刚更新到RC6的Restlet从previously RC5。 Android应用做了简单的HTTPS打电话到externel网址。
i just updated to restlet rc6 from previously rc5. The android app does a simple https call to an externel url.
在RC5一切工作发现,在RC6我现在得到以下错误:
In rc5 everything worked find, in rc6 i now get the following error:
08-30 10:03:39.185: WARN/System.err(15077): Error while handling an HTTP client call
08-30 10:03:39.185: WARN/System.err(15077): [ 08-30 10:03:39.185 15077:0x3aff W/System.err ]
java.lang.RuntimeException: Unable to create SSLContext.
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.ext.net.internal.HttpUrlConnectionCall.<init>(HttpUrlConnectionCall.java:130)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.ext.net.HttpClientHelper.create(HttpClientHelper.java:156)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.engine.adapter.ClientAdapter.toSpecific(ClientAdapter.java:160)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:111)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.Client.handle(Client.java:180)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.routing.Filter.doHandle(Filter.java:159)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.routing.Filter.handle(Filter.java:206)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.resource.ClientResource.handle(ClientResource.java:1137)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1226)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.resource.ClientResource.handle(ClientResource.java:1069)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.resource.ClientResource.handle(ClientResource.java:1045)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.resource.ClientResource.handle(ClientResource.java:951)
08-30 10:03:39.185: WARN/System.err(15077): at org.restlet.resource.ClientResource.get(ClientResource.java:658)
08-30 10:03:39.185: WARN/System.err(15077): at de.ewe.tk.apps.android.css.services.DocstoreService.getDocumentInfos(DocstoreService.java:86)
08-30 10:03:39.195: WARN/System.err(15077): at de.ewe.tk.apps.android.css.activity.DocstoreListActivity$GetDocumentInfosTask.doInBackground(DocstoreListActivity.java:66)
08-30 10:03:39.195: WARN/System.err(15077): at de.ewe.tk.apps.android.css.activity.DocstoreListActivity$GetDocumentInfosTask.doInBackground(DocstoreListActivity.java:46)
08-30 10:03:39.195: WARN/System.err(15077): at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-30 10:03:39.195: WARN/System.err(15077): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-30 10:03:39.195: WARN/System.err(15077): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-30 10:03:39.195: WARN/System.err(15077): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-30 10:03:39.195: WARN/System.err(15077): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-30 10:03:39.195: WARN/System.err(15077): at java.lang.Thread.run(Thread.java:1102)
08-30 10:03:39.195: WARN/System.err(15077): Caused by: java.security.NoSuchAlgorithmException: TrustManagerFactory SunX509 implementation not found
08-30 10:03:39.195: WARN/System.err(15077): at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:105)
08-30 10:03:39.195: WARN/System.err(15077): at javax.net.ssl.TrustManagerFactory.getInstance(TrustManagerFactory.java:80)
08-30 10:03:39.195: WARN/System.err(15077): at org.restlet.ext.ssl.DefaultSslContextFactory.createSslContext(DefaultSslContextFactory.java:357)
08-30 10:03:39.195: WARN/System.err(15077): at org.restlet.ext.net.internal.HttpUrlConnectionCall.<init>(HttpUrlConnectionCall.java:126)
08-30 10:03:39.195: WARN/System.err(15077): ... 21 more
谁能告诉我什么RC6已更改,因此它不工作了?
can anyone tell me what has changed in rc6 so that it is not working anymore?
有关RC6的发行说明说:
the release notes for rc6 say:
The support for HTTPS has been significantly completed and fixed in all connectors for :
cipher suites restriction
SSL/TLS protocol version restriction
client certificate request & requirement setting
不幸的是我didn't发现在官方的文档任何暗示什么在我的code,以获得再次合作改变。
unfortunately i didn´t find any hints in the official docs what to change in my code in order to get it working again.
感谢名单,
蒂洛
thanx,thilo
推荐答案
傻兔子列入RC6显然 DefaultSslContextFactory.createSslContext(..)
方法如下:
The silly bunnies included the following in the DefaultSslContextFactory.createSslContext(..)
method for rc6 apparently:
setKeyManagerAlgorithm(helperParameters.getFirstValue(
"keyManagerAlgorithm", true, System.getProperty(
"ssl.KeyManagerFactory.algorithm", "SunX509")));
即。他们硬codeD SunX509这是专有于Sun JDK的 - 一个pretty糟糕的总体思路。这被固定在提交 025d356d9fc3620ba9ed613fed32f1a5668f4f70
17天前。
如果你需要它的工作现在你可以尝试下载并自行构建库,当然。
If you need it to work now you could try downloading and building the libraries yourself of course.
这篇关于java.security.NoSuchAlgorithmException:的TrustManagerFactory SunX509实施未找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!