Articles of https

在Android上使用HttpPost和DefaultHttpClient时出现身份validation错误

我正在使用HttpClient遇到一个奇怪的问题。 我正在使用带有HttpPost的DefaultHttpClient()。 我正在使用HttpGet 100%成功但现在尝试切换到HttpPost,因为我正在使用的REST API需要POST参数而不是GET。 (仅限于一些API调用,所以我知道GET调用工作正常,因此它不是API的错误)。 此外,我尝试在我编写的一个简单的PHP脚本上使用HttpPost查找POST参数’var’并将其回显到屏幕,传递此参数如下工作正常: List nameValuePairs = new ArrayList(); postMethod = new HttpPost(“http://www.examplewebsite.com”); nameValuePairs.add(new BasicNameValuePair(“var”, “lol”)); try { postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); response = httpClient.execute(postMethod, responseHandler); Log.i(“RESTMethod”, response); … 问题是,当我尝试对API执行相同的调用时(但是明显将params更改为API参数),我收到以下错误: Authentication error: Unable to respond to any of these challenges: {} 我请求的页面是一个HTTPS页面,这可能是问题吗? 但是对API上的原始HTTP页面执行相同types的POST请求会产生相同的错误,除非我注释掉StringEntity部分然后它运行(但返回xml并且我想传递一个参数来请求JSON中的数据) 。 这似乎是一个非常奇怪的问题(非https部分),但无法真正find任何有关此问题的帮助,所以很抱歉,如果答案在那里。 有任何想法吗? 提前致谢, Infinitifzz 编辑:好的,我无处可去,所以我想如果我引导你进入API,它可能会有所帮助,这是8Tracks API ,你可以看到你需要为所有请求传递一个开发键(api_key)而我的部分我坚持使用https来记录用户: http : //www.8tracks.com/sessions.xml […]

执行https调用时出现错误的版本密钥库

你好安德鲁程序员。 我正在尝试从我的Android代码进行https安全调用。 该调用在模拟器上运行良好,但在实际的三星Galaxy设备上,我收到SSL错误。 我使用疯狂的bobs方法处理cetificate。 这是疯狂的bobs链接: http : //blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html 。 问题是我在自定义SSLSocketFactory对象中遇到错误:“密钥库的错误版本”。 有关如何解决这个问题的建议? 谢谢。

使用HTTPS的KSOAP 2 Android

我正在使用KSOAP2来管理Android中的SOAP,但它使用https作为SOAP URL,我收到此错误:javax.net.ssl.SSLException:不受信任的服务器证书 正常错误,因为证书不受信任,但是有人知道如何解决此错误? 我无法管理证书,因为来自其他公司,我无权更改它。 谢谢

处理Android Webview中的证书错误并清除证书参数

我正在尝试find一种在Android Webview中处理SSL证书错误的正确方法。 我的目标是提供一种加载具有SSL证书错误的页面的方法,但是当用户尝试加载带有证书错误的URL时 ,让用户选择在警告他安全性之后加载页面。 我在线程中find的最接近的解决方案建议覆盖WebViewClient,如下所示: webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) { handler.proceed(); } }); 但是,这在没有用户同意的情况下基本上禁用了WebView中的SSL。 这里参考我发现解决方案的线程: Android WebView SSL’安全警告’ Android上的Web View是否支持SSL? Android WebView未加载HTTPS URL 带有客户端证书的android webview 在Android中使用WIFI时,Web视图在加载URL后显示空白/白页 无法在Android网页视图上加载特定网页 WebView显示某些链接的空白视图 Android WebView阻止从https重定向到http 忽略webview中的ssl证书请求 我继续实施了一个略有不同的版本,提示用户: webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(final WebView view, final SslErrorHandler handler, […]

使用安全的HTTPS连接在Android Webview上设置凭据

我想创建一个Android Webview,通过使用凭据通过安全的HTTPS连接连接到网站。 第一个难点是接受证书(私人),它是用这个非常有用的post解决的。 第二个难点是使用凭据,我find了这篇文章。 (来自dparnas的第一个答案)似乎与它相处得很好,但它谈论的是HTTP连接,而不是HTTPS 。 我试过了,但它不起作用,我只是到达登录表单页面,没有任何错误消息,只是正常的空白表单。 这是我的代码: import android.app.Activity; import android.net.http.SslError; import android.os.Bundle; import android.webkit.HttpAuthHandler; import android.webkit.SslErrorHandler; import android.webkit.WebView; import android.webkit.WebViewClient; public class ConnectorWebView extends Activity { WebView mWebView; String mUsrName; String mPassC; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.connwebview); // Getting info from Intent extras // Get it if it s different […]

无法validation证书签名?

我从这边使用SSL Socket和Trustmanager 自签名SSL 但我一直得到以下错误: 09-28 19:52:41.942:WARN / System.err(10101):javax.net.ssl.SSLHandshakeException:org.bouncycastle.jce.exception.ExtCertPathValidatorException:无法validation证书签名。 哪里不对? 我已经在stackoverflow上检查了不同的post,但我似乎无法让它工作。 我的代码: SchemeRegistry schemeRegistry = new SchemeRegistry(); // http scheme schemeRegistry.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80)); // https scheme schemeRegistry.register(new Scheme(“https”, new EasySSLSocketFactory(), 443)); params = new BasicHttpParams(); params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 1); params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(1)); params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, “utf8”); CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(new AuthScope(“www.example.com”, AuthScope.ANY_PORT), new […]

Android:使用HttpsURLConnection的HTTPS(SSL)连接

我有2个应用程序,一个是Servlet / Tomcat服务器,另一个是Android应用程序。 我想使用HttpURLConnection在两者之间发送和接收XML。 码: private String sendPostRequest(String requeststring) { DataInputStream dis = null; StringBuffer messagebuffer = new StringBuffer(); HttpURLConnection urlConnection = null; try { URL url = new URL(this.getServerURL()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setRequestMethod(“POST”); OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream()); out.write(requeststring.getBytes()); out.flush(); InputStream in = new BufferedInputStream(urlConnection.getInputStream()); dis = new DataInputStream(in); int ch; long […]

生成和安装SSL证书

当我成功将自定义SSL证书添加到Android 6模拟器(我对system.img文件进行持久更改)时,我觉得我破解了primefaces。 但浏览器无法以任何方式识别它。 我遵循了这个很棒的教程 ,我认为我在散列方面做错了。 以下是我所做的全部步骤,以及到目前为止所做的工作。 我的系统 Windows 10,64 BIT 预建模拟器 名称:Nexus_64 API:23 目标:Android 6(Android API) CPU / ABI x86 / 64 磁盘大小3 GB 高级模拟器设置 RAM:512 MB VM堆:128 MB 内部存储2 GB (从右侧下拉菜单中选择) SD卡:Studio管理的2 GB 系统文件 从教程: 890c6016.0获取证书文件 创建用于将系统文件存储在c:\device_tmp空文件夹 公用事业: 来自/android_sdk/tools/emulator.exe emulator 来自/android_sdk/platform-tools/adb.exe adb 我做了什么 启动模拟器: emulator -avd Nexus_64 -no-snapshot-load 现在它启动,我打开命令行窗口 find外部存储的名称,因为sdcard没有足够的存储空间用于映像文件。 adb shell df 在我的情况下/storage/13E4-1F02/获得2GB空间 […]

HttpsURLConnection:SSL恢复无法正常工作

我正在尝试使用HttpsURLConnection和我自己的信任管理器设置SSL(使用SSL恢复)。 我只能进行ssl握手和连接。 没有SSL恢复 – 以前的会话永远不会被重用! 我搜索了一遍,但没有运气。 所有答案都是指HttpClient(这不是一个选项)。 我的设置如下: 我创建了一个SSL上下文,我将其存储供以后使用。 然后我使用这个SSL上下文创建一个SSL工厂,我也存储它以便与所有连接一起使用。 我开始一切顺利的连接:我收到一个sessionID ,一个完整的握手完成,连接被发送到服务器。 一分钟后,我开始另一个连接。 出于某些奇怪的原因,此连接不会发送我之前的sessionID 。 我打印SSLContext的会话 – 最后一个会话仍在那里并且有效。 由于某种原因,此新连接不使用它,因此会创建另一个会话并将其添加到会话的缓存中。 我在两个不同的设备上尝试了Android版本2.3和4.1。 在许多谷歌搜索结果之后,我甚至试图像一些用户提议的那样添加Keep-Alive,以及导致没有不同结果的其他伏都教。 有没有人碰到这个? 有什么我想念的吗? 什么可能导致我的连接不使用上一个会话? 提前致谢!

使用URL.openConnection()建立HTTPS连接

我正在尝试与证书设置为2013年4月到期的服务器建立HTTPS连接,并使用GlobalSign作为根证书。 HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); // urlConnection.setSSLSocketFactory(sslSocketFactory); urlConnection.setDoOutput(true); urlConnection.setChunkedStreamingMode(0); // Send the POST data OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream()); out.write(postParamString.toString().getBytes(“UTF8”)); // Read the reply InputStream in = urlConnection.getInputStream(); 就此而言,这会抛出javax.net.ssl.SSLHandshakeException: org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate signature. 当调用getOutputStream()时。 这个相同的站点和证书在HTC Web浏览器和桌面浏览器中都有效。 当我使用相同的代码访问谷歌它工作(但然后抱怨404错误)。 StackOverflow上的各种post暗示它应该“正常工作”而其他人说要设置你自己的密钥库(或禁用所有HTTPSvalidation!)我假设行为的差异归结为使用中的不同根密钥库(任何人都可以澄清这一点?)。 我现在尝试使用充气城堡创建一个密钥存储区,但我无法将其加载到我的设备上。 从Firefox导出证书后,我使用以下方法创建密钥库: keytool.exe -import -alias onlinescoutmanager -file www.onlinescoutmanager.co.uk.crt -storetype BKS -keystore res\raw\keystore 然后使用以下命令加载并在应用程序中使用: InputStream […]