问题标签 [httpsurlconnection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
15747 浏览

java - 使用HttpsURLConnection时如何覆盖Android发送给服务器的密码列表?

在 TLS 协商期间,客户端向服务器发送支持的密码列表,服务器选择一个,然后加密开始。当我HttpsURLConnection用于通信时,我想更改这个由 Android 发送到服务器的密码列表。

我知道我可以setSSLSocketFactoryHttpsURLConnection对象上使用来将其设置为使用SSLSocketFactory. 当我想更改SSLSocketSSLSocketFactory.

我知道通常可以使用对象编辑此密码套件列表,并使用它们提供的方法SSLParameters将其传递给SSlsocket对象。SSLEngine

但是SSLSocketFactory似乎没有公开这样的方法!

我找不到方法来更改由I 传递给创建SSLParameters的返回SSLSocket对象的.SSLSocketFactoryHttpsURLConnection

该怎么办?

我想这通常也与 Java 有关,而不仅仅是 Android。也许有一种面向对象的方式来做到这一点(例如,将其扩展SSLSocketFactory并提供给HttpsURLConnection?)

0 投票
1 回答
110 浏览

java - Eclipse插件开发,当我连接时如何停止弹出用户/密码窗口的HttpsURLConnection

JDK IBM 1.6 Eclipse 3.6.2

使用以下代码连接到服务器。

URL urlTemplate = 新 URL(uri); uc = (HttpURLConnection) urlTemplate.openConnection();

当连接错误的凭据时,它会弹出一个窗口输入正确的凭据作为输入,如何停止它?它似乎是内置操作,无法停止该内置功能。

另一个问题是,当我成功连接到服务器一次时,它将存储凭据,即使用户/密码错误,后续测试也将全部运行。如何清除缓存,以便测试新输入的用户和密码?

0 投票
3 回答
58585 浏览

java - 如何从 Android 进行 HTTPS POST?

我想做一个 HTTPS 发布方法,将一些数据从我的 android 应用程序发送到我的网站。

HttpURLConnection首先使用它,它在我的 HTTP URL 上运行良好。我的生产网站使用 HTTPS,我想使用HttpsURLConnection. 有人可以帮助我正确使用课程吗?

我在这个链接上找到了一些来源:

的值应该是 KeyStore keyStore = ...;多少?

我尝试使用相同的方式发送数据 HttpURLConnection,但我看到一些 POST 数据丢失或错误。

我已经尝试过这个问题的方法。我在下面粘贴我的代码

我得到的错误如下:

0 投票
3 回答
8893 浏览

android - Fiddler - 解密 Android HttpsUrlConnection SSL 流量

我花了无数个小时试图通过 Fiddler 为 HttpsUrlConnection 解密 Android SSL 流量,但收效甚微。如何可靠地配置 Fiddler 以使用 HttpsUrlConnection 解密来自 Android 应用程序的 SSL 流量?

这是我的步骤

  1. 在 PC 上运行 Fiddler(使用适当的设置:捕获 HTTPS 连接、解密 HTTPS 流量、允许远程计算机连接)
  2. 在 Android 设备上配置无线连接以通过运行 fiddler 的 PC 进行代理
  3. 从 android 设备打开浏览器到http://[运行 fiddler 的电脑的 ip]:8888 并下载“FiddlerRoot 证书”。命名并安装它。
  4. 在安卓浏览器中打开https://www.google.com,在 PC 上查看 Fiddler 中的解密流量。

以上工作。问题是非浏览器 android 流量在 Fiddler 中显示为连接隧道。我最初的研究表明问题是由于证书是如何通过 HttpsUrlConnection 被信任的,所以我确保根据这篇文章https://secure.mcafee.com/us/resources/white-papers/wp-defeating-ssl信任所有证书-cert-validation.pdf

不幸的是,使用 HttpsUrlConnection 信任所有证书对我不起作用,所以我停止了调查。几天后,我决定再试一次,惊讶地发现 fiddler 流量正在为 HttpsUrlConnection 解密!不幸的是,我没有进行任何进一步的更改来解决这个问题,所以我不完全确定它为什么开始工作。它使用的设备是 LG-Optimus L9 Android 版本 4.0.4 并且已植根。

现在我正在尝试为 Nexus 7 Android 版本 4.2.2(未植根)配置它,但可惜我在提琴手中看到的只是连接隧道。由于两台设备上的证书具有相同的序列号,并且我正在测试的应用程序相同,我很难理解为什么我不能用另一台 Android 设备配置 Fiddler。

总结

  • Fiddler 可以解密来自 LG Optimus 的 SSL 流量,但只显示来自 Nexus 7 的连接隧道
  • 两台设备都运行同一个应用程序,该应用程序使用 HttpsUrlConnection 进行网络请求
  • 两台设备都安装了相同的提琴手证书(序列匹配),并且没有安装其他用户证书。
  • 不要认为这些很重要,但是...
    • Rooted 设备 (LG Optimus Android 4.0.4) 使用 Proxy Droid 指向运行 fiddler 的 PC
    • 非根设备(Nexus 7 Android 4.2.2)使用内置“修改网络”指向运行提琴手的 PC
0 投票
1 回答
1942 浏览

java - HttpsURLConnection 的 SSLSocket

我有一个JEditorPane通过 SSL/TLS 加载网站。我的目标是(通过反射)获取 SSL 连接的特定信息,例如 SSL 握手的完成消息。我唯一得到的JEditorPaneURL,因此是HttpsURLConnection.

但是我如何获得SSLSocketHttpsURLConnection?有任何想法吗?

0 投票
2 回答
2751 浏览

java - 如何设置要用于使用 HttpsURLConnection 创建的套接字的密码和协议列表?

获取 an 的正常方法是用 aSSLSocketFactory初始化一个 new ,然后使用该方法。但是,这不允许我启用所需的密码套件或协议。SSLContextTrustManagerKeyManagerSecureRandomgetSocketFactory()

HttpsURLConnection允许进行此类更改的唯一配置是设置其默认值SSLSocketFactory。我可以创建一个扩展SSLSocketFactory和覆盖该getDefaultCipherSuites()方法的类,并包装由创建的套接字createSocket()以设置所需的密码和协议。但是,这种方法不允许我TrustManager为连接初始化一个吗?

有没有一种方法我可以做到 - 设置密码套件和协议并初始化信任管理器?

0 投票
1 回答
571 浏览

java - 如何在 TrustManager 的 checkServerTrusted() 中获取 CertPathValidatorResult?

当调用checkServerTrusted实现类的方法时X509TrustManager,我需要获取与证书链相关的所有验证错误,包括

  1. 证书路径验证问题。例如 CA 不受信任
  2. 证书字段验证问题。例如过期的证书,无效的扩展密钥使用

这背后的动机是,我可以在用户将其添加为“例外”之前向用户展示证书验证问题,就像 Firefox 现在所做的那样。但是,现在,一旦发现路径验证问题,CertPathValidatorException就会抛出 a,但它没有提供有关证书中字段有效性的信息。我该如何实施?

经过一番阅读,我发现CertPathAPI 提供了这样的功能,并发现 PKIX 实现是对此的包装,但只是不返回CertPathValidatorResult. 我想在返回所有验证问题的同时最大限度地利用现有的 JAVA 功能(无需将我自己的自定义包装器写入 API)。

0 投票
0 回答
892 浏览

android - 从 URL 连接请求中获取 SSL 证书详细信息

在 android 中,我想与 HTTPS URL 建立 URL 连接。打开连接后,我希望能够从服务器读取证书并获取颁发的公用名和组织字符串?

这可能吗?如果是这样,最好的方法是什么?

到目前为止,我一直在使用 HttpsUrlConnection 作为:

但是在这一点之后,我不确定如何获得具体的证书详细信息?我什至不确定这是否是正确的方法。

0 投票
2 回答
2990 浏览

android - HttpsURLConnection 中的“已建立连接”异常

我正在尝试使用 POST 请求HttpsURLConnection并获取

setRequestMethod奇怪的是,之前返回conn.connectedfalse

我错过了什么?

编辑

我尝试了 DefaultHttpClient 并且它有效,所以我将使用它。

0 投票
3 回答
12610 浏览

java - 获取对 Java 的默认 http(s) URLStreamHandler 的引用

我有一个库需要在我的一个项目中使用,不幸的是它注册了自己的URLStreamHandler库来处理 http- URLs。有没有办法获得对 Java 的默认 http- 和 https- 的引用URLStreamHandlers,所以我可以在 的构造函数中指定其中一个URL来打开标准的 http 连接而不使用库覆盖的协议?