2

不要感到惊讶,但我的问题不是关于不工作的东西:为什么 .Net WebClient 能够在没有任何配置的情况下使用 HTTPS 开箱即用?

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

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

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

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

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

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

感谢您的任何意见。:)

4

1 回答 1

1

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

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

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

于 2013-06-06T23:21:10.857 回答