【问题标题】:Why .Net WebClient is able to use HTTPS without any configuration whereas Java HttpClient can't为什么 .Net WebClient 无需任何配置即可使用 HTTPS 而 Java HttpClient 不能
【发布时间】:2013-05-31 03:20:43
【问题描述】:

请不要感到惊讶,但我的问题不是关于某些无法正常工作的问题:为什么 .Net WebClient 无需任何配置就能够开箱即用地使用 HTTPS?

我不会问我是否没有一些严肃的理由认为它不应该是这种情况:确实我已经使用 Apache HttpClient 执行完全相同的操作,通过 HTTPS 进行 POST,但它抱怨。

困扰 HttpClient 的是服务器 TLS 证书是未知的。 这是一个合法的投诉,所以我已将证书添加到我正在使用的 JRE 证书存储中,之后一切都按预期工作。

首先您能否消除一个可怕的疑问:WebClient 正确使用 HTTPS,如果我尝试连接到“https://downloadspywaresandmalwares.com”,它应该会以“你疯了伙计,这不是受信任的位置!”之类的方式拒绝我吗?

所以我想这与 .Net 和 Java 不同的安全策略有关:也许 Java 捆绑了自己的一组证书和权限,而 .Net 与操作系统更集成,可能有更大的受信任组证书。

那么我如何检查所有这些假设呢?

如果它有任何重要性:我使用的是 Chrome 中的网站,但从未使用过 IE,所以 WebClient 没有使用 IE 配置。

感谢您的任何意见。 :)

【问题讨论】:

    标签: java .net https webclient apache-httpclient-4.x


    【解决方案1】:

    好的,我想我终于明白了:

    • 我怀疑 .Net 没有自己的证书存储,但使用操作系统存储
    • 我已经设法找到并删除了证书,但这并不容易,因为 Windows 正在努力在其存储中维护一些证书
    • 删除后,如预期的那样,WebClient 已损坏并抱怨,因为它“无法为 SSL/TLS 安全通道建立信任关系
    • 所以是的,WebClient 正确使用 SSL,这是一种解脱 :)

    希望这些信息对其他人有用...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 2018-05-10
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多